I3d shapes чем открыть

Обновлено: 07.07.2024

В ходе работы столкнулся с задачей чтения файлов с расширением ".shp". Та информация, которую я нашел в интернете, была разрозненной и расплывчатой, и, поэтому, я решил объединить то, до чего мне пришлось доходить самостоятельно, и рассказать вам.

Постановка задачи

У нас имеется файл с расширением ".shp". В этом файле находится карта в виде изолиний: каждая изолиния сделана отдельным шейпом; наименованием шейпа является высотная характеристика изолинии. Нашей задачей станет считать данные из этого в массив. Массив представляет собой набор точек определенный тремя координатами (x, y, z). Далее этот массив нужно занести в базу данных, но данный момент мы упустим из рассмотрения.

Немного теории

Рассмотрим важные для нас особенности формата "*.shp". На самом деле ShapeFile содержит много информации, но у нас узкий интерес. Во первых нам нужно знать, что ShapeFile разделен на так называемые «Шейпы» (англ. Shape — Фигура). Шейп представляет собой фигуру или набор фигур (возможно не связанных между собой) сложных форм. Хранится шейп в виде отдельных точек и информации о линиях соединяющих их. В нашем случае каждый шейп это непрерывная кривая обозначающая положение точек земного ландшафта имеющих одинаковую высоту (наименование шейпа соответствует численному значение высоты). В виду специфичности задачи нас не будет интересовать информация о линиях соединяющих точки, а только информация о положении точек и их высота.

Стоит так же отметить, что вместе с файлом формата "*.shp" формируется файл формата "*.dbf" содержащий заголовочную информацию о наших шейпах. Файл "*.dbf" должен иметь такое же название, что и файл ".shp".

MapWindowGIS

image

После того, как Вы скачаете данную библиотеку необходимо ее установить. После установки, запускаем среду разработки Delphi. Выполняем команду Component-Import AciveX Control… после чего появится окно:

В списке библиотек ActiveX находим — MapWinGIS Component и нажимаем на кнопку «Install…«, после чего необходимо установить данную библиотеку как обычный компонент. После успешной установки данной библиотеки, компонент TMap появиться на вкладке ActiveX.

Добавляем отображение карты

Для начала добавим на форму компонент Map1 типа TMap. Как уже говорилось, он находится на последней позиции вкладки ActiveX.

Для того что бы наш компонент отображал карту, содержащуюся в нашем файле, достаточно простого кода:

shp:Shapefile; //переменная ассоциируемая с шейп-файлом
HandleLayer:integr; //необходимо для индексации слоев в шейп файле

shp:=CoShapefile.Create; //создание шейп-файла
shp.Open('map.shp',nil); //считывание из файла 'map.shp'
Map1.Focused; //в некоторых случаях, если не добавить данную строчку возникает ошибка
HandleLayer:=Map1.AddLayer(shp,true); //добавление слоя карты на компонент
Map1.ZoomToMaxExtents; //уменьшение (или увеличение) масштаба так, что бы все влезло

Считывание заголовочной информации о шейпах

Что бы считать заголовочную информацию из файла формата "*.dbf" мы будем использовать компоненты TTable и TDataSource. Для этого добавим на форму компоненты Table1 типа TTable и DataSource1 типа TDataSource из вкладок «BDE» и «Data Access» соответственно. Компонент Table1 оставляем без изменения, а в компоненте DataSource1 в параметре «DataSet» выбираем «Table1».

Для удобства добавляем на форму компонент OpenDialog1 типа TOpenDialog из вкладки «Dialogs». В параметре «Filter» компонента OpenDialog1, добавляем фильтр с наименованием «Shape files (.shp)» и фильтрацией "*.shp" (без кавычек). Кроме того добавим кнопки «Открыть» и «Сохранить».

Полный код процедуры на кнопку «Открыть» будет выглядеть следующим образом:

nameDB:WideString; //в этой переменной будет содержаться наименование файла
HandleLayer:integr;

nameDB:=OpenDialog1.FileName; //присваиваем наименование в соответствии с выбором пользователя
shp:=CoShapefile.Create;
shp.Open(nameDB,nil);
Map1.Focused;
HandleLayer:=Map1.AddLayer(shp,true);
Map1.ZoomToMaxExtents;

Delete(nameDB,length(nameDB)-2,3); //обрубаем разрешение
nameDB:=nameDB+'dbf'; //меняем разрешение на ".dbf"
Table1.TableName:=nameDB; //ассоциируем таблицу с фалом "*.dbf"
Table1.Active:=True; //"запускаем" таблицу

Не забываем, что переменную shp нужно добавить в раздел глобальных переменных.

Считываем точки из файла

Для начала приведу код процедуры назначенной на кнопку «Сохранить»:

i,j:integer; //индексирующие переменные
z:integer; //высота точек, считываемая из наименования

if shp<>nil then //проверка на наличие информации в переменной shp
begin

Table1.First; //берем первый шейп из заголовочной таблицы
k:=0;
for i:=0 to shp.NumShapes-1 do //перебор всех шейпов
begin
z:=StrToInt(Table1.Fields[2].Value); //считывание высоты из заголовочной таблицы шейпов
for j:=0 to shp.Shape[i].numPoints-1 do //перебор всех точек шейпа
begin
Mas[k].x:=shp.Shape[i].Point[j].x;
Mas[k].y:=shp.Shape[i].Point[j].y;
Mas[k].z:=z;
inc(k);
end;
Table1.Next; //переходим к следующему шейпу
end;
..
//тут можно например сохранить массив в базу данных
..

end
else ShowMessage('Файл не открыт');
end;

Давайте рассмотрим некоторые особенности. Итак, Mas — одномерный массив точек имеющий три параметра типа Double (x, y, z). Параметр shp.NumShapes равен количеству шейпов внутри файла. Параметр Table1.Fields[2].Value — это наименование текущего шейпа (файл "*.dbf" устроен таким образом, что наименование записано в 3-тьем столбце). shp.Shape[i].numPoints, как вы наверно уже догадались — количество точек в i-том шейпе. shp.Shape[i].Point[j].x и shp.Shape[i].Point[j].y — те самые заветные координаты j-той точки i-того шейпа. Остальное, думаю, понятно из комментариев.

Заключение

Вот мы и закончили рассматривать особенности работы с ShapeFile в среде Delphi. С поставленной задачей мы справились полностью. Конечно, данный обзор является только вершиной айсберга, но я надеюсь эта вводная статья поможет вам в дальнейшем освоении этого направления.

I3D raster image file contains 3D textures used by computer animation software Houdini. The software was developed in Canada, and is used for creating and editing professional scenes with dynamic effects, lighting, and video composition.

Houdini offers wide array of funtions to generate complex physical phenomena, so I3D files are typically used for storing cloud and smoke image data. I3D document, however, can easily hold any volumetric data.

Файл растрового изображения I3D содержит трехмерные текстуры, используемые программой компьютерной анимации Houdini. Программное обеспечение было разработано в Канаде и используется для создания и редактирования профессиональных сцен с динамическими эффектами, освещением и видео композицией.

Houdini предлагает широкий спектр функций для генерации сложных физических явлений, поэтому файлы I3D обычно используются для хранения данных облачных и дымовых изображений. Документ I3D, однако, может легко содержать любые объемные данные.

Программа(ы), умеющие открыть файл .I3D

Windows
Mac OS
Linux

Как открыть I3D файлы

Если появилась ситуация, в которой Вы не можете открыть файл I3D на своем компьютере - причин может быть несколько. Первой и одновременно самой важной (встречается чаще всего) является отсутствие соответствующей аппликации обслуживающей I3D среди установленных на Вашем компьютере.

Самым простым способом решения этой проблемы является нахождение и скачивание соответствующей аппликации. Первая часть задания, уже выполнена, - программы для обслуживания файла I3D Вы найдете ниже. Теперь достаточно скачать и установить соответствующую аппликацию.

В дальнейшей части этой страницы Вы найдете другие возможные причины, вызывающие проблемы с файлами I3D.

Возможные проблемы с файлами в формате I3D

Отсутствие возможности открытия и работы с файлом I3D, совсем не должен значить, что мы не имеем установленного на своем компьютере соответствующего программного обеспечения. Могут выступать другие проблемы, которые также блокируют нам возможность работы с файлом Houdini Image 3D Format. Ниже находится список возможных проблем.

  • Повреждение открываемого файла I3D.
  • Ошибочные связи файла I3D в записях реестра.
  • Случайное удаление описания расширения I3D из реестра Windows
  • Некомплектная установка аппликации, обслуживающей формат I3D
  • Открываемый файл I3D инфицирован нежелательным, вредным программным обеспечением.
  • На компьютере слишком мало места, чтобы открыть файл I3D.
  • Драйверы оборудования, используемого компьютером для открытия файла I3D неактуальные.

Если Вы уверены, что все перечисленные поводы отсутствуют в Вашем случае (или были уже исключены), файл I3D должен сотрудничать с Вашими программами без каких либо проблем. Если проблема с файлом I3D все-таки не решена, это может значить, что в этом случае появилась другая, редкая проблема с файлом I3D. В таком случае остается только помощь специалиста.

Похожие расширения

.abm Music Album Format
.accountpicture-ms Microsoft Windows 8 Account Picture Format
.acorn Acorn Draw Format
.acr Bitmap Graphics
.adc Lingvo Dictionary Format
.afx Auto F/X Image Format
.agif Active GIF Creator Project Format
.agp ArtGem Project Format
Как связать файл с установленной программой?

Если Вы хотите связать какой-то файл с новой программой (напр. moj-plik.I3D) Вы можете воспользоваться двумя вариантами. Первый и самый простой - это нажатие правой кнопкой мышки на избранный файл I3D. Из открытого меню выберите опцию Выбрать программу по умолчанию", затем опцию "Пересматривать" и найти требуемую программу. Всю операцию необходимо утвердить нажатием кнопки OK.

Есть ли универсальный метод открытия неизвестных файлов?

Многие файлы содержат данные в виде текста или чисел. Возможно, что во время открытия неизвестных файлов (напр. I3D) популярный в системе Windows простой редактор текста, которым является Notatnik позволит нам увидеть часть данных, закодированных в файле. Этот метод позволяет просмотреть содержимое многих файлов, однако не в такой форме, как программа, предназначенная для их обслуживания.

Мне сказали, на пикабу читать инструкции не любят, ведь можно просто показать, куда ткнуть. Поэтому я постараюсь уложиться в минимум слов, чтобы оставить максимум места для тыкания.

Будем разбирать на примере Швейцарии из моей карты (точнее, уже подаренной):

Учимся создавать векторное изображение карт. Своими руками, Карты, Qgis, Osm, Длиннопост

Мы будем работать с shape-файлами.

Что такое shape-файлы

Это слои трех видов: точки, кривые, полигоны. В основном вы будете скачивать архив, в котором много файлов *.shp. Все они будут названы интуитивно понятно:

Waterways – реки, buildings – постройки и т.д.

Где найти shape-файлы

1. Geofabrik - собраны отдельные карты стран и городов, а также можно найти карту всего мира. Не смог на сайте найти административные границы. Возможно, потому что там собраны только физические карты.

Пример: Швейцария. Нас интересует архив *.shp.zip. Но его качать не нужно, так как слои слишком детальны.

Подходит, если вы собираетесь создавать карту области (например, ЦФО) на большом формате.

2. Openstreetmap - можно экспортировать любую выбранную область (сверху кнопка ЭКСПОРТ). Выбирается область приближением к нужному месту на карте.

Подходит, если вам нужно создать карту города, так как большую область сайт экспортировать не даст.

3. Mapzen - собраны карты крупных городов.

Подходит, если выбранная область города на сайте Openstreetmap слишком большая для экспорта, но весь ЦФО вам качать не нужно.

4. Gadm - границы стран.

Подходит для одной страны, если нужна граница одной страны.

5. Naturalearthdata - если английский слабо прокачан, смело переводите в хроме и качайте нужные слои: административные границы (всех стран), реки, здания, дороги и многое другое. Можно также найти и наложить на карту изображение гор и глубины морей и океанов. Для удобства карты поделены по уровню масштаба (10 – наиболее детальные)

Подходит для больших областей (часть света, карта всего мира).

6. Mapcruzin - карты не такие подробные, как в Openstreetmap, но подробнее, чем Naturalearthdata. Удивительно, но и здесь административных границ я не обнаружил.

Подходит для карты небольшой страны, на небольшом формате (а4).

7. Просто забивайте в поисковик “Нужная область” shape.

В чем открывать скачанные shape-файлы

Скачиваем Qgis. Не забываем про разрядность системы. Устанавливаем и запускаем ярлык:

Учимся создавать векторное изображение карт. Своими руками, Карты, Qgis, Osm, Длиннопост

Как работать в программе Qgis

Скачиваем с сайта Gadm границу Швейцарии:

Учимся создавать векторное изображение карт. Своими руками, Карты, Qgis, Osm, Длиннопост

В программе Qgis добавляем слой к проекту:

Учимся создавать векторное изображение карт. Своими руками, Карты, Qgis, Osm, Длиннопост

Жмем ОБЗОР. Выбираем файл CHE_adm0.shp из распакованного архива. Жмем ОТКРЫТЬ. Вы должны получить примерно следующее (цвет может отличаться):

Учимся создавать векторное изображение карт. Своими руками, Карты, Qgis, Osm, Длиннопост

Сразу обращаем внимание, что это полигон, и что вид Швейцарии не внушает доверия. Нам нужно изменить систему координат проекта. О координатах можно говорить много, но я скажу только необходимое:

1. В нашем проекте будем использовать систему Sphere Mercator.

Подходит для больших областей - весь мир или часть света. Вид будет привычен, как на интернет картах или картах на уроке географии.

2. На картах, где изображен весь мир, координаты сильно искажены. Поэтому наиболее правильно использовать координаты WGS 84. Но использовать их можно только на небольших областях (город, страна, область которой умещается в одной UTM zone).

Для небольшой области UTM zone ищите в поисковике.

Пример: для Парижа правильно использовать координаты WGS 84/ UTM zone 31N.

Примечание: чтобы понять почему только на небольших областях, загрузите границы России с системой координат для Парижа.

Меняем систему координат проекта:

Учимся создавать векторное изображение карт. Своими руками, Карты, Qgis, Osm, Длиннопост

Включаем галочку сверху Enable ‘on the fly’. В поиске ищем Sphere_Mercator. Выбираем. Жмем ОК. Любуемся результатом:

Учимся создавать векторное изображение карт. Своими руками, Карты, Qgis, Osm, Длиннопост

Добавим к проекту озера. Заходим на сайт Naturalearthdata. Скачиваем архив с озерами по верхней кнопке и дополнительные озера Европы по нижней. Добавляем к проекту файлы слоев с озерами (расширение *.shp).

Реки я хочу взять с сайта Mapcruzin. Одна Швейцария будет пусто смотреться, если скачать реки с Naturalearthdata. Нам нужны Switzerland Waterways. Добавляем к проекту файл слоя с реками (расширение *.shp).

Учимся создавать векторное изображение карт. Своими руками, Карты, Qgis, Osm, Длиннопост

Замечаем, что озера – это тоже полигоны. А нам нужен векторный файл из одних линий. Идем в меню:

Учимся создавать векторное изображение карт. Своими руками, Карты, Qgis, Osm, Длиннопост

И преобразуем по очереди два слоя озер (граница нам еще пригодится в качестве полигона). После преобразования слой автоматически добавится в проект, и будет назван "Линии из полигонов".

Совет: сразу переименовывайте автоматически добавленные слои после преобразований, а старые слои можно удалять из проекта.

Управление слоями расположено слева внизу:

Учимся создавать векторное изображение карт. Своими руками, Карты, Qgis, Osm, Длиннопост

Помимо удаления и переименования, можно перейти в свойства слоя, нажав правой кнопкой мыши по нему, и, например, изменить цвет слоя.

Теперь нужно удалить всё, что выходит за границы страны. Переходим в меню:

Учимся создавать векторное изображение карт. Своими руками, Карты, Qgis, Osm, Длиннопост

Исходный слой – слой, который нужно обрезать (например, реки). Слой обрезки – полигон, границы которого определят линию обрезки (полигон границы). По очереди обрезаем реки и озера, не забывая переименовывать слоя после автоматического добавления в проект и удалять ненужные слои, чтобы не путаться.

Осталось совсем немного! Преобразуем полигон границы в линию. Должно получиться нечто похожее:

Учимся создавать векторное изображение карт. Своими руками, Карты, Qgis, Osm, Длиннопост

Теперь необходимо пересохранить слои, чтобы создать единый слой (почему-то без пересохранения операция объединения вызывает стабильную ошибку). Правой кнопкой по слою/сохранить как.

Формат выбираем – AutoCAD DXF.

На строке File name нажимаем обзор, и выбираем место сохранения и имя файла.

И ОБЯЗАТЕЛЬНО не забываем выбрать систему координат нашего проекта - Sphere Mercator.

Учимся создавать векторное изображение карт. Своими руками, Карты, Qgis, Osm, Длиннопост

После сохранения слой автоматически добавится в проект с новым именем. Всплывающее окно будет спрашивать про систему координат. По умолчанию там стоит система, в который вы сохраните слой, поэтому просто нажимаем ОК. Проделываем данную процедуру для каждого слоя.

Осталось объединить слои. Заходим в меню:

Учимся создавать векторное изображение карт. Своими руками, Карты, Qgis, Osm, Длиннопост

Выбираем слои объединения, нажав многоточие в соответствующем пункте окна. Выбираем все необходимые слои. Нажимаем ОК. Нажимаем RUN. Все выскакивающие окна только уточняют систему координат. Везде нажимаем ОК. Сами знаете, что сделать со всем слоями, кроме результата объединения . Любуемся Швейцарией:

Учимся создавать векторное изображение карт. Своими руками, Карты, Qgis, Osm, Длиннопост

Сохраняем слой, как сохраняли предыдущие слои в формате AutoCAD DXF. Открываем в любом редакторе, который понимает данный формат (Corel Draw, Компас).

После открытия не забываем себе сказать, что вы великолепны.

Небольшой бонус до комментариев. Ответ на вопрос, который терзал мне душу около недели:

Учимся создавать векторное изображение карт. Своими руками, Карты, Qgis, Osm, Длиннопост

На этом все! Если возникнут вопросы - спрашивайте, стараюсь отвечать на все. Всем удачи и душевного спокойствия!

Но есть несколько особенностей, которые нужно знать:

Первое - масштаб объекта (Scale).

Для одного статичного объекта не имеет большого значения – равен масштаб единице или нет, а вот для нескольких объектов, а так же для динамических и кинематических твердых объектов изменение масштаба приведет к не правильным результатам. Масштаб изменяется всегда, когда Вы сжимаете или растягиваете объект, но привести значения Scale к 1 не составляет никакого труда.


Выделите объект и выполните Modify > Freeze Transformations, все трансформации обнулятся.
Так как файлы Майя и файлы i3d всегда идентичны по размеру, после экспорта объекта в файл i3d и подгонки там его размеров – можно выставить те же значения в майе, заморозить трансформации и уже от правильно отмасштабированного объекта строить модель дальше.

Второе – имя объекта или группы и история.

Чтобы потом не плутать в i3d файле в огромном списке объектов (половина из которых уже не существует) регулярно «убивайте» историю: Edit > Delete by Type > History, а чтобы поменять имя объекта на более значимое, откройте в Майе Outhliner, двойным щелчком на откройте строку имени, поменяйте его и сохраните изменение (Enter).

Пивоты объектов очень часто расположены не там где нам нужно. То дверь крутится вокруг собственного центра, то колеса вокруг центра сетки. Конечно, все расставляют пивоты на свои места (напомню: жмем W > insert и тащим изменившийся манипулятор куда нужно). Но, при экспорте в i3d вдруг обнаруживается, что пивоты всех объектов находятся в центре координатной сетки. Конечно, можно создать в GE группу, вставить в нее объект и подогнать его в группе так, чтобы при перемещении группы он вращался вокруг нужной точки. А можно избежать этих «танцев с бубнами» если во время конвертирования прибить все пивоты в майя-файле к своим местам.
Выделите объект, откройте окно экспорта и выберите в третьей вкладке Tools нажмите кнопку FreezeToPivot.
Откройте предпросмотр и выделяя объекты убедитесь, что все пивоты на своих местах.

Читайте также: