УДК 004.9:504:519.6 А.В. ХАЛЧЕНКОВ*
СОЗДАНИЕ РАСЧЕТНОЙ СЕТКИ ДЛЯ ЭКОЛОГИЧЕСКИХ МОДЕЛЕЙ НА ОСНОВЕ СВОБОДНО ДОСТУПНЫХ ГИС-ДАННЫХ
Институт проблем математических машин и систем НАН Украини, Киев, Украина
Анотаця. До^джена задача побудови координатно прив 'язаног неструктурованог мереж1 на ocHoei втьно доступних Г1С-даних. Виконано пор1вняння основних метод1в побудови неструктуро-ваних сток з використанням контурiв програми Google Earth. Представлен новi тструменти для перетворення полiгонiв програми Google Earth у вхiдний формат програми GMSH. Приведет базо-вi рекомендаци для вибору методу побудови сток у прикладних задачах.
Ключов1 слова: Г1С, неструктурована стка, полiгон, Google Earth, GMSH, Wolfram Mathematica.
Аннотация. Исследована задача построения координатно привязанных сеток на основе свободно доступных ГИС-данных. Проведено сравнение основных методов построения неструктурированных сеток с использованием контуров программы Google Earth. Представлены новые инструменты для преобразования полигонов программы Google Earth во входной формат программы GMSH. Приведены базовые рекомендации для выбора метода построения сеток в прикладных задачах. Ключевые слова: ГИС, неструктурированная сетка, полигон, Google Earth, GMSH, Wolfram Math-ematica.
Abstract. The problem of creation of coordinate-linked grids based on freely available GIS-data was investigated. Comparison of the main methods of use of Google Earth contours as basic data for creation of a computational grids was executed. New tools, for transformation of the Google Earth polygons to an entrance format of the GMSH program are presented. Basic recommendations for the choice of a method in applied tasks are made.
Keywords: GIS, unstructured grid, polygon, Google Earth, GMSH, Wolfram Mathematica. 1. Введение
Преобладающее большинство задач моделирования окружающей среды неразрывно связано с аппроксимацией неких географических объектов. Эти объекты зачастую пространственно обширные, поэтому единственный корректный способ их аппроксимации - это сеточное представление. Процесс аппроксимации географических объектов регулярно приводит к необходимости решения трех типичных подзадач:
1) создание контура, который описывает территорию, представляющую интерес (область расчета для CFD-моделей, моделирование площадного источника загрязнений и т.д.);
2) привязка контура к реальным координатам;
3) создание расчетной сетки на основе созданного контура.
Практически каждая новая задача по моделированию окружающей среды начинается с изучения объекта с помощью Google Earth [1]. В этой программе можно быстро и удобно построить произвольный контур, который охватит интересующее место и сразу же будет привязан к реальным координатам. Вероятно, Google Earth - это самый удобный и доступный инструмент для решения первой и второй подзадач. Но, к сожалению, решение первых двух подзадач в Google Earth приводит к затруднению при решении третьей подзадачи. Даже широко распространенные программы, использующиеся при моделировании окружающей среды, в большинстве своем не способны читать встроенные форматы Google Earth (kml and kmz).
Целью работы является исследование возможностей применения свободно доступных ГИС-данных для построения координатно привязанной расчетной сетки. В качестве
© Халченков А.В., 2016
ISSN 1028-9763. Математичш машини i системи, 2016, № 2
исходных данных предложено использование контуров программы Google Earth. В работе изложены основные методы создания расчетной сетки, а также даны практические рекомендации для выбора одного из методов при решении прикладных задач по моделированию окружающей среды. В качестве примера в работе используется контур Днепровского хвостохранилища Приднепровского химического завода.
2. Построение расчетной сетки с помощью цепочки вспомогательных программ и бесплатного мешера GMSH
На рынке программного обеспечения есть несколько готовых решений, распространяемых по лицензии GNU (GPL) и позволяющих построить качественную двумерную или трехмерную расчетную сетку. Вероятно, самые удобные и известные из них - это программы GMSH [2] и NETGEN [3]. Обе эти программы позволяют импортировать готовую геометрию из универсальных CAD-форматов, а также имеют собственные форматы для представления геометрических моделей.
Чтобы решить задачу передачи географических данных из Google Earth в программу GMSH, была написана утилита Polygon_KML_to_GMSH.exe. Эта утилита позволяет считывать данные, содержащие контур (Polygon) в формате kml, и преобразовывать их в доступный для программы GMSH вид (входной текстовый файл геометрии, формат geo).
Интерфейс утилиты представлен на рис. 1. Он состоит из окна, в котором выводится список координат узлов, образующих контуры Google Earth, а также из управляющих кнопок:
• «Read KML file» - открывает диалоговое окно для считывания kml файла;
• «To create GMSH file» - сохраняет все
найденные контуры во входном формате программы GMSH;
• «Exit» - выход из программы.
Дополнительно в функционал программы входят кнопки «Find» и «Merge». Кнопка
«Find» позволяет найти в контуре узлы, находящиеся друг от друга на расстоянии меньшем, чем значение, указанное в поле «Find nearby points (m)». Кнопка «Merge» заменяет считанный контур новым контуром, в котором остается только один из близко расположенных узлов. Этот функционал создан для того, чтобы быстро искать и исправлять ошибки в исходном контуре Google Earth, поскольку слишком близко расположенные узлы в исходном контуре могут приводить к ненужному чрезмерному сгущению сетки. Но использование данного функционала утилиты неизбежно вносит ошибку в исходный контур, поэтому лучше эти кнопки не использовать, а стремиться к изначально качественному построению контура в Google Earth.
Порядок необходимых действий для построения расчетной сетки с помощью программы Google Earth, с помощью указанной утилиты и программы GMSH:
1) построить в Google Earth произвольный контур с помощью функции «Add Polygon» (рис. 2 a);
2) сохранить построенный контур в формате *.kml;
Polygon.KML.to.GMSH
Find nearby points (m): [й>~
Find Merge
34.6755628520276 48 5067134904221 О 34.6768425900661 48.5066865009249 О 34.6845103232085 48.5078530385518 О 34 6846336081817 48 5084677727097 О 34 6829305128127 48 5094185658882 О 34.6827266797674 48 5099502991876 О 34.6795680179186 48 5114546461139 О 34.6787663633445 48 5120866886573 О 34.6767957127563 48 5129713624174 0 34.6760955854447 48.51304|07406548 0 34.6753343451896 48 5136289416094 О 34.6736018491995 48 5147647117131 0 34.6719117109405 48 5157878593863 0 34.6707901323844 48 516617669957 О 34.669481024981 48 5172610041188 0 34.6683151911931 48 5172640730225 0
Read KML file То create GMSH lile Exil
KHalchenkov, 2011, ®
Рис. 1. Рабочее окно утилиты Polygon_KML_to_GMSH.exe
3) применить утилиту Polygon_KML_to_GMSH.exe (необходимо последовательно выполнить такие действия: нажать кнопку «Read KML file», выбрать сохраненный kml файл, нажать кнопку "Tocreate GMSH file"). В результате рядом с файлом kml появится файл с Polygon.geo, содержащий геометрию в формате программы GMSH;
4) открыть файл с Polygon.geo в программе GMSH, построить и сохранить сетку (рис. 3). При потребности в GMSH можно указать дополнительные параметры, например, указать область сгущения сетки и т.д.
На выходе мы имеем сетку в формате GMSH, соответствующую исходному полигону (рис. 26). Этот формат можно использовать во многих CFD-программах. Например, в составе программного пакета OpenFoam [4] есть утилита gmshToFoam, позволяющая конвертировать сетку из формата GMSH в формат OpenFoam.
a
б
Рис. 2. Исходный контур и результирующая сетка в Google Earth
Рис. 3. GMSH mesh
Для других задач, например, для аппроксимации протяженного площадного источника набором элементарных источников малого размера [5] была создана утилита Quadr_mesh.exe (рис. 4), которая считывает текстовый файл с сеткой (в формате *.msh) и преобразовывает его в удобный для дальнейшей работы *.csv-формат (номер элемента, номер полигона, если их несколько, далее по порядку долгота и широта каждого угла каждого элементарного четырехугольника сетки). Интерфейс этой программы состоит из текстового окна и трех кнопок:
• «Open Mesh File» - открывает диалоговое окно, в котором нужно выбрать файл с
• «Run» - обрабатывает данные, выбирает из них четырехугольные элементы и сохраняет их в csv-формате;
• «Exit» - выход из программы. Примечание: приведенная выше процедура сохраняет все координаты в градусах долготы и широты, что зачастую неудобно при решении прикладных задач. Преобразование координат в более удобную метрическую координатную систему (например, в UTM) можно выполнить из полученного csv-файла с помощью пакетных конвертеров или с помощью математических программ широкого профиля, таких как Wolfram Mathematica [6].
3. Построение расчетной сетки из контура Google Earth с помощью коммерческих универсальных математических пакетов на примере системы Wolfram Mathematica 10.2
Современные математические пакеты имеют настолько широкие возможности, что позволяют выполнить всю процедуру построения сетки без привлечения стороннего программного обеспечения.
Чтобы на базе контура Google Earth построить расчетную сетку в программе Mathematica, необходимо выполнить подобный порядок действий:
• импортировать контур Google Earth в формате kml или kmz Con=Import["Contur.kml","Data"];
• выбрать из всего набора данных массив координат Con=Con[[1,2,2,1,1,1,All,{2,1}]];
• выполнить триангуляцию (рис. 5) R=DiscretizeRegion[Polygon[Con]];
• вывести результат триангуляции в виде набора данных p=MeshPrimitives[R,2].
Полученный в результате подобной процедуры набор примитивов для самоконтроля можно легко экспортировать обратно в Google Earth (рис. 6):
p2=Table[Polygon[Append[p[[k,1]],p[[k,1,1]]]],{k,1,Length[p]}]; Export["Tria.kml","Data"->{{"LayerName"->"cell","Geometry"->p2}},{"KML","Rules"}].
При импорте можно было сразу выполнить преобразование координат контура, например, в UTM-систему:
Con=Import["Contour.kml","Data"]; Con=Con[[1,2,2,All,1]];
сеткой;
Read of quadrangular elements
Total amount of nodes • 564 *
Total amount of elements • 644
Amount of quadrangular elements • 508
Quadrangular elements have been successfully saved to file:
"Quadr_Mesh.csv'1
Open Mesh File | Run | Exit
KHalchenkov, 2011.®
Рис. 4. Рабочее окно утилиты Quadr_mesh.exe
Con=Map[GeoGridPositюn[#,"UTMZone36"]&,Con]; Con=Con[[1,1,All,{1,2}]].
Далее можно экспортировать полученную сетку в удобный для дальнейшего использования формат csv ^^ xls):
Export["Triangl_Meshxsv",Map[Flatten,p[[AllД]]]].
Рис. 6. Результирующая сетка, построенная в Mathematica
4. Построение расчетной сетки из контура GoogleEarth с помощью промежуточных форматов и специализированных программ для построения сеток
Существует множество универсальных 3D и CAD-форматов (stl, dxf, 3ds, x3d, obj, ma и т.д.). Большинство специализированных программ, созданных для моделирования сплошной среды, имеют свои инструменты для построения сеток, позволяющие импортировать значительную часть общепринятых CAD-форматов.
В качестве конверторов из kml в промежуточные форматы можно, например, использовать коммерческие математические программы. Mathematica позволяет преобразовать kml в промежуточный stl-формат [7] с помощью таких команд:
Con=Import["Contour.kml","Data"]; Con=Con[[1,2,2,1,1,1,All,{2,1}]];
Export["Contour.sti",Polygon[Con]].
Далее файл с геометрией в формате stl можно использовать в большинстве известных программ, позволяющих строить сетку. С stl-форматом могут работать:
• коммерческие МКЭ, МКО-программы (Ansys, Femap, Comsol и т.д.);
• распространяемые по лицензии GNU (GPL) мешеры GMSH и NetGen;
• программный комплекс OpenFoam имеет встроенную утилиту snappyHexMesh для импорта stl-геометрии.
Вероятно, в настоящее время использование промежуточных форматов - это основной метод построения сеток на основе контуров kmz. Но этот метод обладает целым рядом существенных недостатков. Форматы промежуточных файлов создавались для других задач, поэтому в процессе конвертирования зачастую теряется информация или добавляются избыточные данные, которые затрудняют дальнейшее построение качественной сетки.
Например, тот же формат stl создан для хранения трехмерных моделей объектов, в котором хранится список треугольных граней, описывающих поверхность. На рис. 7 представлен результат импорта контура kml в GMSH через промежуточный stl-формат. Как видно из рисунка, при конвертировании в stl-формат появляются чрезмерно остроугольные элементы, которые затрудняют дальнейшее построение качественной сетки. Эту проблему приходится решать индивидуально для каждой задачи, что существенно затрудняет всю методику использования промежуточных форматов.
5. Сравнение трех представленных методов построения расчетной сетки на основе контуров из Google Earth
Каждый из указанных методов построения сетки имеет свои преимущества и недостатки. Сравнительная характеристика каждого метода приведена в табл. 1.
Таблица 1. Преимущества и недостатки указанных методов построения расчетных сеток на
основе ГИС-данных_
_Использование цепочки вспомогательных программ и программы GMSH_
Преимущества:
• используются исключительно свободно доступные программы;
• широкие возможности для управления качеством построенной сетки. Программа GMSH имеет удобный интерфейс и широкий функционал для управления качеством сетки: можно указывать области сгущения, выбирать тип элементов (треугольные или четырехугольные), присутствует функция Extrude, позволяющая строить трехмерную сетку путем вытягивания двумерной сетки и т.д.;
• для CFD-задач есть возможность указанным геометрическим граням присвоить определенные названия непосредственно на этапе построения сетки, что существенно облегчает назначение граничных условий для расчетной программы (например, после экспорта расчетной сетки в Open Foam);
• есть готовые решения для экспорта сетки в ряд CFD и CAE-программ (например, Nastran, Abaqus, Open Foam и т.д.), для других случаев можно сохранить сетку в обычном текстовом формате.
Недостатки:
• используется не одна программа, а цепочка программ;
• нет готового встроенного решения для преобразования координат (например, из географических координат в метры);
• ограниченный список программ, для которых есть готовые решения, позволяющие выполнить экспорт построенной сетки, но есть возможность экспорта в универсальный текстовый формат;
• не предусмотрена возможность обратного экспорта, визуализации готовой расчетной сетки в Gis-программе_
_Использование универсальных коммерческих математических пакетов_
Преимущества:
_• все выполняется в рамках одной программы;_
_Продолж. табл. 1
• наличие широких возможностей встроенного языка программирования;
• возможность выполнения экспорта сетки обратно в Google Earth для визуализации.
Недостатки:
• коммерческая лицензия на математический пакет;
• отсутствие интерфейса, что затрудняет построение и контроль качества сетки;
• нет готовых решений для задания граничных условий;
• нет готовых решений для экспорта сетки. Для каждого случая нужно создавать свой интерфейс передачи данных_
Использование промежуточных форматов и специализированных программ
_для построения сеток_
Преимущества и недостатки варьируются в очень широком диапазоне и зависят _от особенностей выбранных программных продуктов_
6. Выводы
В данной статье описаны три метода, позволяющие создать произвольную расчетную сетку, привязанную к координатам, на основе контуров из Google Earth. Оптимальный выбор метода зависит от решаемой задачи, а также от наличия или отсутствия соответствующего программного обеспечения. Исходя из табл. 1, можно сделать общие выводы:
• использование промежуточных форматов оправдано при наличии соответствующего программного обеспечения для регулярно повторяющихся задач. В таком случае, единожды отработав технологию удаления артефактов из промежуточного формата, можно постоянно использовать оптимальную программу для построения сеток, лучшую именно для вашей задачи;
• использование универсальных математических пакетов оправдано для разового решения некой задачи. В этом случае отсутствие интерфейса и сложность использования компенсируются широкими возможностями встроенного языка программирования;
• использование GMSH со вспомогательными программами может рассматриваться как некий универсальный метод, основанный исключительно на свободно доступном программном обеспечении, а также позволяющий решать широкий класс задач с возможностью использования удобного интерфейса и широкого функционала программы GMSH.
СПИСОК ЛИТЕРАТУРЫ
1. Справочный центр - Google Планета Земля [Электронный ресурс]. - Режим доступа: http://support.google.com/earth/?hl=ru#topic=4363013.
2. Geuzaine С. Gmsh Reference Manual. The documentation for Gmsh2.5. A finite element mesh generator with built-in pre- and post-processing facilities. 2010 [Электронный ресурс] / C. Geuzaine, J.-F. Remacle. - Режим доступа: http://geuz. org/gmsh/doc/texinfo/gmsh .pdf.
3. Schoberl J. NETGEN - 4.3. 2003 [Электронный ресурс] / J. Schoberl. - Режим доступа: http : //www .hpfem.jku.at/netgen/ng4.pdf.
4. "OpenFOAM Programmer^ Guide. Version 3.0.1", OpenFOAMFoundation, 2015 [Электронный ресурс] . - Режим доступа: http://foam.sourceforge.net/docs/Guides-a4/ProgrammersGuide.pdf.
5. Халченков А.В. Реализация и тестирование модуля атмосферного переноса в программе Ecolego / А.В. Халченков, И.В. Ковалец // Зб. наук. праць 1нституту проблем моделювання в енергетищ iм. Т.е. Пухова. - 2012. - № 65. - С. 3 - 10.
6. Wolfram Language & System Documentation Center [Электронный ресурс]. - Режим доступа: http://reference .wolfram.com/language/.
7. Burns M. The STL format. Standart data format for fabbers [Электронный ресурс] / M. Burns. - Режим доступа: http : //www.fabbers. com/tech/STL Format.
Стаття над1йшла до редакцИ' 28.03.2016