<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://wiki.gis-lab.info/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=%D0%90%D0%BD%D0%BD%D0%B0+%D0%93%D0%BE%D1%80%D0%B5%D0%B2%D0%B0</id>
	<title>GIS-Lab - Вклад [ru]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.gis-lab.info/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=%D0%90%D0%BD%D0%BD%D0%B0+%D0%93%D0%BE%D1%80%D0%B5%D0%B2%D0%B0"/>
	<link rel="alternate" type="text/html" href="https://wiki.gis-lab.info/w/%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:%D0%92%D0%BA%D0%BB%D0%B0%D0%B4/%D0%90%D0%BD%D0%BD%D0%B0_%D0%93%D0%BE%D1%80%D0%B5%D0%B2%D0%B0"/>
	<updated>2026-04-04T16:18:13Z</updated>
	<subtitle>Вклад</subtitle>
	<generator>MediaWiki 1.39.6</generator>
	<entry>
		<id>https://wiki.gis-lab.info/index.php?title=%D0%98%D0%BC%D0%BF%D0%BE%D1%80%D1%82_%D0%B8_%D0%B0%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85_%D0%BB%D0%B8%D0%B4%D0%B0%D1%80%D0%BD%D0%BE%D0%B9_%D1%81%D1%8A%D0%B5%D0%BC%D0%BA%D0%B8_%D0%B2_PostgreSQL/PostGIS_%D1%81_%D0%BF%D0%BE%D0%BC%D0%BE%D1%89%D1%8C%D1%8E_PDAL&amp;diff=24627</id>
		<title>Импорт и анализ данных лидарной съемки в PostgreSQL/PostGIS с помощью PDAL</title>
		<link rel="alternate" type="text/html" href="https://wiki.gis-lab.info/index.php?title=%D0%98%D0%BC%D0%BF%D0%BE%D1%80%D1%82_%D0%B8_%D0%B0%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85_%D0%BB%D0%B8%D0%B4%D0%B0%D1%80%D0%BD%D0%BE%D0%B9_%D1%81%D1%8A%D0%B5%D0%BC%D0%BA%D0%B8_%D0%B2_PostgreSQL/PostGIS_%D1%81_%D0%BF%D0%BE%D0%BC%D0%BE%D1%89%D1%8C%D1%8E_PDAL&amp;diff=24627"/>
		<updated>2016-11-09T07:43:24Z</updated>

		<summary type="html">&lt;p&gt;Анна Горева: Исправлены разъяснения к драйверам,по объектам pointcloud и функциям расширения pointcloud_postgis, ссылки на ресурсы, использ. PDAL и pointcloud&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Статья|Черновик}}&lt;br /&gt;
{{Аннотация|Рассмотрен процесс хранения и анализа данных лидарной съемки в PostgreSQL с использованием технологии PointCloud и импорта данных с помощью библиотеки PDAL}}&lt;br /&gt;
&lt;br /&gt;
== Введение ==&lt;br /&gt;
Лидар (LIDAR - Light Identification, Detection and Ranging) – это технология получения и обработки информации дистанционного зондирования с проведением высокоточных измерений X, Y, Z координат. Обработанные и пространственно организованные данные лидарной съемки называют облаком точек – это огромные наборы высотных 3D точек, имеющих дополнительную атрибутику.&amp;lt;br /&amp;gt;&lt;br /&gt;
Данные LIDAR на территории городов или регионов могут содержать в себе миллиарды точек местности. Хранение их в базе данных в классическом виде как тип геометрии «точка» представляется возможным, но очень ресурсозатратным. Во-первых, огромное количество записей в таблице, что увеличивает время обработки данных. Во-вторых, большой объем памяти, занятый хранилищем.&amp;lt;br /&amp;gt;&lt;br /&gt;
Для решения этих проблем существует технология хранения данных лидарной съемки в PostgreSQL/PostGIS c использованием встроенного расширения pointcloud и импорта таких данных в базу с помощью библиотеки PDAL (Point Data Abstract Library)&amp;lt;ref name=&amp;quot;ttttest&amp;quot;&amp;gt;[http://www.pdal.io www.pdal.io], Официальная страница PDAL.&amp;lt;/ref&amp;gt;.&amp;lt;br /&amp;gt;&lt;br /&gt;
В статье использованы материалы лидарной съемки на территорию Нижнего Новгорода, представленные файлами в формате LAS (Logging ASCII Standard) на площади размером 1×1 км.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Файл:Lidar-data-nn-1.png]]&amp;lt;br /&amp;gt;&lt;br /&gt;
== Создание хранилища ==&lt;br /&gt;
Установка PostgreSQL/PostGIS для Windows описана на странице http://gis-lab.info/qa/postgis-install.html#02.&amp;lt;br /&amp;gt;&lt;br /&gt;
Прежде чем загрузить данные LIDAR в таблицу PostgreSQL, а затем сделать пространственный анализ с помощью PostGIS, необходимо создать новую базу данных с соответствующими расширениями:&amp;lt;br /&amp;gt;&lt;br /&gt;
# Создать новую базу данных с именем «Lidar».&lt;br /&gt;
# Активировать расширения pointcloud, postgis и pointcloud_postgis&amp;lt;ref name=&amp;quot;tttest&amp;quot;&amp;gt;[http://s3.cleverelephant.ca/foss4gna2013-pointcloud.pdf s3.cleverelephant.ca], LIDAR in PostgreSQL with PointCloud.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE EXTENSION postgis;&lt;br /&gt;
CREATE EXTENSION pointcloud;&lt;br /&gt;
CREATE EXTENSION pointcloud_postgis;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
''Примечание: расширения pointcloud и pointcloud_postgis устанавливается по умолчанию с PostGIS (http://postgis.net/windows_downloads/). Дополнительные настройки не требуются. При возникновении ошибок возможна отдельная загрузка расширения(https://github.com/pgpointcloud/pointcloud).''&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Объектами в pointcloud для PostGIS являются точки (PcPoint) - базовый объект, и блоки (PcPatch) - объединенные в группы PcPoint. Вместо таблицы миллиардов отдельных записей PcPoint, набор данных LIDAR может быть представлен в базе как гораздо меньшая коллекция (10 миллионов) из PcPatch записей.&amp;lt;br /&amp;gt;&lt;br /&gt;
Расширение pointcloud_postgis добавляет функции, которые позволяют выполнять обработку облака точек, преобразовывать PcPoint и PcPatch в геометрию и осуществлять пространственную фильтрацию данных. Примеры использования таких функций рассмотрены в главе ''Пространственный анализ''. &lt;br /&gt;
== Импорт данных ==&lt;br /&gt;
Импорт данных происходит с помощью библиотеки PDAL. PDAL это библиотека для манипулирования данными облака точек. Она очень похожа на библиотеку GDAL, которая обрабатывает растровые и векторные данные. В дополнение к коду библиотеки, PDAL предоставляет набор приложений командной строки, которые пользователи могут удобно использовать для обработки облака точек. &amp;lt;br /&amp;gt;&lt;br /&gt;
=== Установка PDAL ===&lt;br /&gt;
Установить PDAL можно через OSGeo4W&amp;lt;ref name=&amp;quot;ttttestt&amp;quot;&amp;gt;[https://trac.osgeo.org/osgeo4w/ trac.osgeo.org/osgeo4w], Официальная страница OSGeo4W.&amp;lt;/ref&amp;gt;.&amp;lt;br /&amp;gt;&lt;br /&gt;
Для этого нужно скачать установщик с официального сайта OSGeo4W - https://trac.osgeo.org/osgeo4w/ и запустить его. Выбрать '''расширенную установку''' и следовать указаниям установщика. На вкладке «Выберите пакеты» в строке поиска ввести ''PDAL'' и начать установку.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Файл:Window-install-pdal.png]]&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Для проверки корректной работы PDAL, после установки, можно прочитать метаданные LAS-файла, выполнив команду:&lt;br /&gt;
&amp;lt;pre&amp;gt;pdal info --input H:\LIDAR\I_+1_+2_10.las --schema&amp;lt;/pre&amp;gt;&lt;br /&gt;
Результат выполнения команды показан на рисунке. Команда –schema показывает размеры и типы полей: X, Y, Z, Intensity, ReturnNumber, NumberOfReturns, ScanDirectionFlag, EdgeOfFlightLine, Classification, ScanAngleRank, UserData, PointSourceId и Time.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Файл:Metadata-las-2_2.png]]&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
=== Импорт данных в PostgreSQL через PDAL ===&lt;br /&gt;
Теперь необходимо создать файл загрузки для чтения LAS-файла, разбиения облака точек на блоки (например, по 400 точек), а затем записи блоков в базу данных.&amp;lt;br /&amp;gt;&lt;br /&gt;
Файлом загрузки PDAL является XML-файл, который описывает обработку данных. Для загрузки нам понадобятся три драйвера PDAL:&lt;br /&gt;
*readers.las – для чтения LAS-файла&lt;br /&gt;
*filters.chipper - для разбиения облака точек на блоки&lt;br /&gt;
*writers.pgpointcloud – для записи LAS-файла в базу данных &lt;br /&gt;
Создаем новый текстовый документ с именем «las2pg.xml» и расширением XML следующего вида&amp;lt;ref name=&amp;quot;test&amp;quot;&amp;gt;[http://workshops.boundlessgeo.com/tutorial-lidar/#loading-lidar-into-the-database workshops.boundlessgeo.com], Analyzing and Visualizing LIDAR.&amp;lt;/ref&amp;gt;:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Pipeline version=&amp;quot;1.0&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;Writer type=&amp;quot; writers.pgpointcloud &amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Option name=&amp;quot;connection&amp;quot;&amp;gt;dbname=lidar user=postgres&amp;lt;/Option&amp;gt;&lt;br /&gt;
    &amp;lt;Option name=&amp;quot;table&amp;quot;&amp;gt;medford&amp;lt;/Option&amp;gt;&lt;br /&gt;
    &amp;lt;Option name=&amp;quot;srid&amp;quot;&amp;gt;4326&amp;lt;/Option&amp;gt;&lt;br /&gt;
    &amp;lt;Filter type=&amp;quot; filters.chipper&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Option name=&amp;quot;capacity&amp;quot;&amp;gt;400&amp;lt;/Option&amp;gt;&lt;br /&gt;
        &amp;lt;Reader type=&amp;quot;readers.las&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;Option name=&amp;quot;filename&amp;quot;&amp;gt; H:\LIDAR\I_+1_+2_10.las&amp;lt;/Option&amp;gt;&lt;br /&gt;
          &amp;lt;Option name=&amp;quot;spatialreference&amp;quot;&amp;gt;EPSG:4326&amp;lt;/Option&amp;gt;&lt;br /&gt;
        &amp;lt;/Reader&amp;gt;&lt;br /&gt;
    &amp;lt;/Filter&amp;gt;&lt;br /&gt;
  &amp;lt;/Writer&amp;gt;&lt;br /&gt;
&amp;lt;/Pipeline&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
''Примечание: названия драйверов могут отличаться. Для своей версии PDAL узнать доступные драйвера можно с помощью команды pdal --drivers.''&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Теперь мы можем загрузить LAS-файл в базу данных. Для этого необходимо выполнить команду:&lt;br /&gt;
&amp;lt;pre&amp;gt;pdal pipeline H:\LIDAR\las2pg.xml&amp;lt;/pre&amp;gt;&lt;br /&gt;
После завершения процесса загрузки в базе данных «LIDAR» появится новая таблица «Medford» следующей структуры:&lt;br /&gt;
&amp;lt;pre&amp;gt;                      Table &amp;quot;public.medford&amp;quot;&lt;br /&gt;
 Column |    Type    |                      Modifiers&lt;br /&gt;
--------+------------+------------------------------------------------------&lt;br /&gt;
 id     | integer    | default nextval('medford_id_seq'::regclass)&lt;br /&gt;
 pa     | pcpatch    |&lt;br /&gt;
 Indexes:&lt;br /&gt;
    &amp;quot;medford_pkey&amp;quot; PRIMARY KEY(id)&amp;lt;/pre&amp;gt;&lt;br /&gt;
Хоть таблица и состоит из двух полей ID и PA, но в поле PA закодирована информация о точках лидара: X, Y, Z, Intensity, ReturnNumber, NumberOfReturns, Classification, ScanAngleRank, Red, Green, Blue. В одной записи хранится пространственная и атрибутивная информация четырехсот точек. &amp;lt;br /&amp;gt;&lt;br /&gt;
Для визуализации результата импорта можно воспользоваться любой ГИС с возможностью подключения к базе данных. Мы используем QGIS&amp;lt;ref name=&amp;quot;teeest&amp;quot;&amp;gt;[http://www.qgis.org/ru/site/ www.qgis.org], Официальная страница QGIS.&amp;lt;/ref&amp;gt;, где создано соединение с базой данных «Lidar».&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Файл:Look-patch-lidar-qgis-4.png‎]]&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Результатом такой технологии импорта данных LIDAR является существенное уменьшение размерности, по сравнению с обычным импортом графических слоев. Характеристики сравнения представлены в таблице.&amp;lt;br /&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Показатель !! Импорт в PostgreSQL/PostGIS через PDAL !! Импорт в PostgreSQL/PostGIS  LAS-файла&lt;br /&gt;
|-&lt;br /&gt;
| Количество записей || 1 864 || 931 919&lt;br /&gt;
|-&lt;br /&gt;
| Размер таблицы, MB || 9,9 || 197&lt;br /&gt;
|}&lt;br /&gt;
Таким образом импортирован один LAS-файл. Если таких файлов множество, есть два пути решения. Первый – объединить все LAS-файлы в один, например, с помощью набора программного обеспечения LAStools (LAStools(с) by Martin Isenburg), в частности программы las2las. Второй – написать собственный скрипт, который генерирует файлы загрузки и выполняет команду PDAL.&lt;br /&gt;
== Пространственный анализ ==&lt;br /&gt;
Формат вывода получившейся таблицы в PostgreSQL труден для восприятия, поэтому для пространственного анализа можно отформатировать таблицу с данными LIDAR.&amp;lt;br /&amp;gt;&lt;br /&gt;
Для обработки и анализа импортированных данных мы можем использовать встроенные функции в расширении pointcloud&amp;lt;ref name=&amp;quot;test&amp;quot; /&amp;gt;. Далее приведены примеры использования таких функций.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
-- Сколько точек в облаке (931919)&lt;br /&gt;
SELECT Sum(PC_NumPoints(pa))&lt;br /&gt;
FROM medford;&lt;br /&gt;
&lt;br /&gt;
-- Какова средняя высота первого блока? (151.95)&lt;br /&gt;
WITH pts AS (&lt;br /&gt;
  SELECT PC_Explode(pa) AS pt&lt;br /&gt;
  FROM medford LIMIT 1&lt;br /&gt;
)&lt;br /&gt;
SELECT Avg(PC_Get(pt,'Z')) FROM pts;&lt;br /&gt;
&lt;br /&gt;
-- Какой вид имеет первая точка?&lt;br /&gt;
WITH pts AS (&lt;br /&gt;
  SELECT PC_Explode(pa) AS pt&lt;br /&gt;
  FROM medford LIMIT 1&lt;br /&gt;
)&lt;br /&gt;
SELECT PC_AsText(pt) FROM pts LIMIT 1;&lt;br /&gt;
-- {&lt;br /&gt;
--  &amp;quot;pcid&amp;quot;:1,&lt;br /&gt;
--  &amp;quot;pt&amp;quot;:[255,1,1,0,0,2,0,0,10,556976,2250.04,1253.42,151.95]&lt;br /&gt;
-- }&lt;br /&gt;
&lt;br /&gt;
-- Сколько блоков? (1864)&lt;br /&gt;
SELECT Count(*)&lt;br /&gt;
FROM medford;&lt;br /&gt;
&lt;br /&gt;
-- Какая минимальная и максимальная высота в блоке? (141.78/ 204.33)&lt;br /&gt;
SELECT&lt;br /&gt;
  Min(PC_PatchMin(pa, 'z')) AS min,&lt;br /&gt;
  Max(PC_PatchMax(pa, 'z')) AS max&lt;br /&gt;
FROM medford;&lt;br /&gt;
-- Как выглядит геометрия блока?&lt;br /&gt;
SELECT st_asewkt(pa::geometry) FROM medford LIMIT 1;&lt;br /&gt;
-- SRID=4326;POLYGON((2250.04 1250.2,2250.04 1253.82,2258.88 1253.82,&lt;br /&gt;
-- 2258.88 1250.2,2250.04 1250.2))&lt;br /&gt;
&lt;br /&gt;
-- Как выглядит геометрия точки?&lt;br /&gt;
WITH pts AS (&lt;br /&gt;
  SELECT PC_Explode(pa) AS pt&lt;br /&gt;
  FROM medford LIMIT 1&lt;br /&gt;
)&lt;br /&gt;
SELECT ST_AsEWKT(pt::geometry) FROM pts LIMIT 1;&lt;br /&gt;
-- SRID=4326;POINT(2250.04 1253.42 151.95)&lt;br /&gt;
&lt;br /&gt;
-- Выбрать атрибуты точек: тип классификации, координаты Z,X,Y&lt;br /&gt;
WITH pts AS (&lt;br /&gt;
  SELECT PC_Explode(pa) AS pt&lt;br /&gt;
  FROM medford &lt;br /&gt;
)&lt;br /&gt;
SELECT PC_Get(pt,'Classification'),PC_Get(pt,'Z'), PC_Get(pt,'X'), PC_Get(pt,'Y') FROM pts LIMIT 1;&lt;br /&gt;
-- 2&lt;br /&gt;
-- 151.95&lt;br /&gt;
-- 2250.04&lt;br /&gt;
-- 1253.42&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
''Примечание: более подробную информацию о расширении pointcloud и функциях SQL смотри в документации (https://github.com/pgpointcloud/pointcloud, http://suite.opengeo.org/docs/latest/dataadmin/pointcloud/postgis.html).''&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Анна Горева</name></author>
	</entry>
	<entry>
		<id>https://wiki.gis-lab.info/index.php?title=%D0%98%D0%BC%D0%BF%D0%BE%D1%80%D1%82_%D0%B8_%D0%B0%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85_%D0%BB%D0%B8%D0%B4%D0%B0%D1%80%D0%BD%D0%BE%D0%B9_%D1%81%D1%8A%D0%B5%D0%BC%D0%BA%D0%B8_%D0%B2_PostgreSQL/PostGIS_%D1%81_%D0%BF%D0%BE%D0%BC%D0%BE%D1%89%D1%8C%D1%8E_PDAL&amp;diff=24615</id>
		<title>Импорт и анализ данных лидарной съемки в PostgreSQL/PostGIS с помощью PDAL</title>
		<link rel="alternate" type="text/html" href="https://wiki.gis-lab.info/index.php?title=%D0%98%D0%BC%D0%BF%D0%BE%D1%80%D1%82_%D0%B8_%D0%B0%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85_%D0%BB%D0%B8%D0%B4%D0%B0%D1%80%D0%BD%D0%BE%D0%B9_%D1%81%D1%8A%D0%B5%D0%BC%D0%BA%D0%B8_%D0%B2_PostgreSQL/PostGIS_%D1%81_%D0%BF%D0%BE%D0%BC%D0%BE%D1%89%D1%8C%D1%8E_PDAL&amp;diff=24615"/>
		<updated>2016-11-08T11:46:59Z</updated>

		<summary type="html">&lt;p&gt;Анна Горева: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Статья|Черновик}}&lt;br /&gt;
{{Аннотация|Рассмотрен процесс импорта и анализа данных лидарной съемки в PostgreSQL с использованием технологии Point Cloud и библиотеки PDAL}}&lt;br /&gt;
&lt;br /&gt;
== Введение ==&lt;br /&gt;
Лидар (LIDAR - Light Identification, Detection and Ranging) – это технология получения и обработки информации дистанционного зондирования с проведением высокоточных измерений X, Y, Z координат. Обработанные и пространственно организованные данные лидарной съемки называют облаком точек – это огромные наборы высотных 3D точек, имеющих дополнительную атрибутику.&amp;lt;br /&amp;gt;&lt;br /&gt;
Данные LIDAR на территории городов или регионов могут содержать в себе миллиарды точек местности. Хранение их в базе данных в классическом виде как тип геометрии «точка» представляется возможным, но очень ресурсозатратным. Во-первых, огромное количество записей в таблице, что увеличивает время обработки данных. Во-вторых, большой объем памяти, занятый хранилищем.&amp;lt;br /&amp;gt;&lt;br /&gt;
Для решения этих проблем существует технология хранения и обработки данных лидарной съемки в PostgreSQL/PostGIS c помощью библиотеки PDAL (Point Data Abstract Library)&amp;lt;ref name=&amp;quot;ttttest&amp;quot;&amp;gt;[http://www.pdal.io www.pdal.io], Официальная страница PDAL.&amp;lt;/ref&amp;gt;.&amp;lt;br /&amp;gt;&lt;br /&gt;
В статье использованы материалы лидарной съемки на территорию Нижнего Новгорода, представленные файлами в формате LAS (Logging ASCII Standard) на площади размером 1×1 км.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Файл:Lidar-data-nn-1.png]]&amp;lt;br /&amp;gt;&lt;br /&gt;
== Создание хранилища ==&lt;br /&gt;
Установка PostgreSQL/PostGIS для Windows описана на странице http://gis-lab.info/qa/postgis-install.html#02.&amp;lt;br /&amp;gt;&lt;br /&gt;
Прежде чем загрузить данные LIDAR в таблицу PostgreSQL, а затем сделать пространственный анализ с помощью PostGIS, необходимо скачать создать новую базу данных с соответствующими расширениями:&amp;lt;br /&amp;gt;&lt;br /&gt;
# Создать новую базу данных с именем «Lidar».&lt;br /&gt;
# Активировать расширения PointCloud, PostGIS и pointcloud_postgis&amp;lt;ref name=&amp;quot;tttest&amp;quot;&amp;gt;[http://s3.cleverelephant.ca/foss4gna2013-pointcloud.pdf s3.cleverelephant.ca], LIDAR in PostgreSQL with PointCloud.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE EXTENSION postgis;&lt;br /&gt;
CREATE EXTENSION pointcloud;&lt;br /&gt;
CREATE EXTENSION pointcloud_postgis;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
''Примечание: расширение Point Cloud устанавливается по умолчанию с PostGIS&amp;lt;ref name=&amp;quot;tteestt&amp;quot;&amp;gt;[http://postgis.net/windows_downloads/ postgis.net], Страница загрузки PostGIS для Windows.&amp;lt;/ref&amp;gt;. Дополнительные настройки не требуются. При возникновении ошибок возможна отдельная загрузка расширения&amp;lt;ref name=&amp;quot;ttest&amp;quot; /&amp;gt;.''&lt;br /&gt;
== Импорт данных ==&lt;br /&gt;
Импорт данных происходит с помощью библиотеки PDAL. PDAL это библиотека для манипулирования данными облака точек. Она очень похожа на библиотеку GDAL, которая обрабатывает растровые и векторные данные. В дополнение к коду библиотеки, PDAL предоставляет набор приложений командной строки, которые пользователи могут удобно использовать для обработки облака точек. &amp;lt;br /&amp;gt;&lt;br /&gt;
=== Установка PDAL ===&lt;br /&gt;
Установить PDAL можно через OSGeo4W&amp;lt;ref name=&amp;quot;ttttestt&amp;quot;&amp;gt;[https://trac.osgeo.org/osgeo4w/ trac.osgeo.org/osgeo4w], Официальная страница OSGeo4W.&amp;lt;/ref&amp;gt;.&amp;lt;br /&amp;gt;&lt;br /&gt;
Для этого нужно скачать установщик с официального сайта OSGeo4W - https://trac.osgeo.org/osgeo4w/ и запустить его. Выбрать '''расширенную установку''' и следовать указаниям установщика. На вкладке «Выберите пакеты» в строке поиска ввести ''PDAL'' и начать установку.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Файл:Window-install-pdal.png]]&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Для проверки корректной работы PDAL, после установки, можно прочитать метаданные LAS-файла, выполнив команду:&lt;br /&gt;
&amp;lt;pre&amp;gt;pdal info --input H:\LIDAR\I_+1_+2_10.las --schema&amp;lt;/pre&amp;gt;&lt;br /&gt;
Результат выполнения команды показан на рисунке. Команда –schema показывает размеры и типы полей: X, Y, Z, Intensity, ReturnNumber, NumberOfReturns, ScanDirectionFlag, EdgeOfFlightLine, Classification, ScanAngleRank, UserData, PointSourceId и Time.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Файл:Metadata-las-2_2.png]]&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
=== Импорт данных в PostgreSQL через PDAL ===&lt;br /&gt;
Теперь необходимо создать файл загрузки для чтения LAS-файла, разбиения облака точек на блоки (например, по 400 точек), а затем записи блоков в базу данных.&amp;lt;br /&amp;gt;&lt;br /&gt;
Файлом загрузки PDAL является XML-файл, который описывает обработку данных. Для загрузки нам понадобятся три драйвера PDAL:&lt;br /&gt;
*writers.pgpointcloud – для чтения LAS-файла&lt;br /&gt;
*filters.chipper&lt;br /&gt;
*readers.las – для записи LAS-файла в базу данных &lt;br /&gt;
Создаем новый текстовый документ с именем «las2pg.xml» и расширением XML следующего вида&amp;lt;ref name=&amp;quot;test&amp;quot;&amp;gt;[http://workshops.boundlessgeo.com/tutorial-lidar/#loading-lidar-into-the-database workshops.boundlessgeo.com], Analyzing and Visualizing LIDAR.&amp;lt;/ref&amp;gt;:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Pipeline version=&amp;quot;1.0&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;Writer type=&amp;quot; writers.pgpointcloud &amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Option name=&amp;quot;connection&amp;quot;&amp;gt;dbname=lidar user=postgres&amp;lt;/Option&amp;gt;&lt;br /&gt;
    &amp;lt;Option name=&amp;quot;table&amp;quot;&amp;gt;medford&amp;lt;/Option&amp;gt;&lt;br /&gt;
    &amp;lt;Option name=&amp;quot;srid&amp;quot;&amp;gt;4326&amp;lt;/Option&amp;gt;&lt;br /&gt;
    &amp;lt;Filter type=&amp;quot; filters.chipper&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Option name=&amp;quot;capacity&amp;quot;&amp;gt;400&amp;lt;/Option&amp;gt;&lt;br /&gt;
        &amp;lt;Reader type=&amp;quot;readers.las&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;Option name=&amp;quot;filename&amp;quot;&amp;gt; H:\LIDAR\I_+1_+2_10.las&amp;lt;/Option&amp;gt;&lt;br /&gt;
          &amp;lt;Option name=&amp;quot;spatialreference&amp;quot;&amp;gt;EPSG:4326&amp;lt;/Option&amp;gt;&lt;br /&gt;
        &amp;lt;/Reader&amp;gt;&lt;br /&gt;
    &amp;lt;/Filter&amp;gt;&lt;br /&gt;
  &amp;lt;/Writer&amp;gt;&lt;br /&gt;
&amp;lt;/Pipeline&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
''Примечание: названия драйверов могут отличаться. Для своей версии PDAL узнать доступные драйвера можно с помощью команды pdal --drivers.''&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Теперь мы можем загрузить LAS-файл в базу данных. Для этого необходимо выполнить команду:&lt;br /&gt;
&amp;lt;pre&amp;gt;pdal pipeline H:\LIDAR\las2pg.xml&amp;lt;/pre&amp;gt;&lt;br /&gt;
После завершения процесса загрузки в базе данных «LIDAR» появится новая таблица «Medford» следующей структуры:&lt;br /&gt;
&amp;lt;pre&amp;gt;                      Table &amp;quot;public.medford&amp;quot;&lt;br /&gt;
 Column |    Type    |                      Modifiers&lt;br /&gt;
--------+------------+------------------------------------------------------&lt;br /&gt;
 id     | integer    | default nextval('medford_id_seq'::regclass)&lt;br /&gt;
 pa     | pcpatch    |&lt;br /&gt;
 Indexes:&lt;br /&gt;
    &amp;quot;medford_pkey&amp;quot; PRIMARY KEY(id)&amp;lt;/pre&amp;gt;&lt;br /&gt;
Хоть таблица и состоит из двух полей ID и PA, но в поле PA закодирована информация о точках лидара: X, Y, Z, Intensity, ReturnNumber, NumberOfReturns, Classification, ScanAngleRank, Red, Green, Blue. В одной записи хранится пространственная и атрибутивная информация четырехсот точек. &amp;lt;br /&amp;gt;&lt;br /&gt;
Для визуализации результата импорта можно воспользоваться любой ГИС с возможностью подключения к базе данных. Мы используем QGIS&amp;lt;ref name=&amp;quot;teeest&amp;quot;&amp;gt;[http://www.qgis.org/ru/site/ www.qgis.org], Официальная страница QGIS.&amp;lt;/ref&amp;gt;, где создано соединение с базой данных «Lidar».&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Файл:Look-patch-lidar-qgis-4.png‎]]&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Результатом такой технологии импорта данных LIDAR является существенное уменьшение размерности, по сравнению с обычным импортом графических слоев. Характеристики сравнения представлены в таблице.&amp;lt;br /&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Показатель !! Импорт в PostgreSQL/PostGIS через PDAL !! Импорт в PostgreSQL/PostGIS  LAS-файла&lt;br /&gt;
|-&lt;br /&gt;
| Количество записей || 1 864 || 931 919&lt;br /&gt;
|-&lt;br /&gt;
| Размер таблицы, MB || 9,9 || 197&lt;br /&gt;
|}&lt;br /&gt;
Таким образом импортирован один LAS-файл. Если таких файлов множество, есть два пути решения. Первый – объединить все LAS-файлы в один, например, с помощью набора программного обеспечения LAStools (LAStools(с) by Martin Isenburg), в частности программы las2las. Второй – написать собственный скрипт, который генерирует файлы загрузки и выполняет команду PDAL.&lt;br /&gt;
== Пространственный анализ ==&lt;br /&gt;
Формат вывода получившейся таблицы в PostgreSQL труден для восприятия, поэтому для пространственного анализа можно отформатировать таблицу с данными LIDAR.&amp;lt;br /&amp;gt;&lt;br /&gt;
Для обработки и анализа импортированных данных мы можем использовать встроенные функции в расширении PointCloud&amp;lt;ref name=&amp;quot;test&amp;quot; /&amp;gt;.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
-- Сколько точек в облаке (931919)&lt;br /&gt;
SELECT Sum(PC_NumPoints(pa))&lt;br /&gt;
FROM medford;&lt;br /&gt;
&lt;br /&gt;
-- Какова средняя высота первого блока? (151.95)&lt;br /&gt;
WITH pts AS (&lt;br /&gt;
  SELECT PC_Explode(pa) AS pt&lt;br /&gt;
  FROM medford LIMIT 1&lt;br /&gt;
)&lt;br /&gt;
SELECT Avg(PC_Get(pt,'Z')) FROM pts;&lt;br /&gt;
&lt;br /&gt;
-- Какой вид имеет первая точка?&lt;br /&gt;
WITH pts AS (&lt;br /&gt;
  SELECT PC_Explode(pa) AS pt&lt;br /&gt;
  FROM medford LIMIT 1&lt;br /&gt;
)&lt;br /&gt;
SELECT PC_AsText(pt) FROM pts LIMIT 1;&lt;br /&gt;
-- {&lt;br /&gt;
--  &amp;quot;pcid&amp;quot;:1,&lt;br /&gt;
--  &amp;quot;pt&amp;quot;:[255,1,1,0,0,2,0,0,10,556976,2250.04,1253.42,151.95]&lt;br /&gt;
-- }&lt;br /&gt;
&lt;br /&gt;
-- Сколько блоков? (1864)&lt;br /&gt;
SELECT Count(*)&lt;br /&gt;
FROM medford;&lt;br /&gt;
&lt;br /&gt;
-- Какая минимальная и максимальная высота в блоке? (141.78/ 204.33)&lt;br /&gt;
SELECT&lt;br /&gt;
  Min(PC_PatchMin(pa, 'z')) AS min,&lt;br /&gt;
  Max(PC_PatchMax(pa, 'z')) AS max&lt;br /&gt;
FROM medford;&lt;br /&gt;
-- Как выглядит геометрия блока?&lt;br /&gt;
SELECT st_asewkt(pa::geometry) FROM medford LIMIT 1;&lt;br /&gt;
-- SRID=4326;POLYGON((2250.04 1250.2,2250.04 1253.82,2258.88 1253.82,&lt;br /&gt;
-- 2258.88 1250.2,2250.04 1250.2))&lt;br /&gt;
&lt;br /&gt;
-- Как выглядит геометрия точки?&lt;br /&gt;
WITH pts AS (&lt;br /&gt;
  SELECT PC_Explode(pa) AS pt&lt;br /&gt;
  FROM medford LIMIT 1&lt;br /&gt;
)&lt;br /&gt;
SELECT ST_AsEWKT(pt::geometry) FROM pts LIMIT 1;&lt;br /&gt;
-- SRID=4326;POINT(2250.04 1253.42 151.95)&lt;br /&gt;
&lt;br /&gt;
-- Выбрать атрибуты точек: тип классификации, координаты Z,X,Y&lt;br /&gt;
WITH pts AS (&lt;br /&gt;
  SELECT PC_Explode(pa) AS pt&lt;br /&gt;
  FROM medford &lt;br /&gt;
)&lt;br /&gt;
SELECT PC_Get(pt,'Classification'),PC_Get(pt,'Z'), PC_Get(pt,'X'), PC_Get(pt,'Y') FROM pts LIMIT 1;&lt;br /&gt;
-- 2&lt;br /&gt;
-- 151.95&lt;br /&gt;
-- 2250.04&lt;br /&gt;
-- 1253.42&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
''Примечание: более подробную информацию о расширении Point Cloud и функциях SQL смотри в документации&amp;lt;ref name=&amp;quot;ttest&amp;quot;&amp;gt;[https://github.com/pgpointcloud/pointcloud github.com], A PostgreSQL extension for storing point cloud (LIDAR) data.&amp;lt;/ref&amp;gt;.''&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Анна Горева</name></author>
	</entry>
	<entry>
		<id>https://wiki.gis-lab.info/index.php?title=%D0%98%D0%BC%D0%BF%D0%BE%D1%80%D1%82_%D0%B8_%D0%B0%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85_%D0%BB%D0%B8%D0%B4%D0%B0%D1%80%D0%BD%D0%BE%D0%B9_%D1%81%D1%8A%D0%B5%D0%BC%D0%BA%D0%B8_%D0%B2_PostgreSQL/PostGIS_%D1%81_%D0%BF%D0%BE%D0%BC%D0%BE%D1%89%D1%8C%D1%8E_PDAL&amp;diff=24610</id>
		<title>Импорт и анализ данных лидарной съемки в PostgreSQL/PostGIS с помощью PDAL</title>
		<link rel="alternate" type="text/html" href="https://wiki.gis-lab.info/index.php?title=%D0%98%D0%BC%D0%BF%D0%BE%D1%80%D1%82_%D0%B8_%D0%B0%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85_%D0%BB%D0%B8%D0%B4%D0%B0%D1%80%D0%BD%D0%BE%D0%B9_%D1%81%D1%8A%D0%B5%D0%BC%D0%BA%D0%B8_%D0%B2_PostgreSQL/PostGIS_%D1%81_%D0%BF%D0%BE%D0%BC%D0%BE%D1%89%D1%8C%D1%8E_PDAL&amp;diff=24610"/>
		<updated>2016-11-08T10:35:02Z</updated>

		<summary type="html">&lt;p&gt;Анна Горева: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Статья|Черновик}}&lt;br /&gt;
{{Аннотация|Рассмотрен процесс импорта и анализа данных лидарной съемки в PostgreSQL с использованием технологии Point Cloud и библиотеки PDAL}}&lt;br /&gt;
&lt;br /&gt;
== Введение ==&lt;br /&gt;
Лидар (LIDAR - Light Identification, Detection and Ranging) – это технология получения и обработки информации дистанционного зондирования с проведением высокоточных измерений X, Y, Z координат. Обработанные и пространственно организованные данные лидарной съемки называют облаком точек – это огромные наборы высотных 3D точек, имеющих дополнительную атрибутику.&amp;lt;br /&amp;gt;&lt;br /&gt;
Данные LIDAR на территории городов или регионов могут содержать в себе миллиарды точек местности. Хранение их в базе данных в классическом виде как тип геометрии «точка» представляется возможным, но очень ресурсозатратным. Во-первых, огромное количество записей в таблице, что увеличивает время обработки данных. Во-вторых, большой объем памяти, занятый хранилищем.&amp;lt;br /&amp;gt;&lt;br /&gt;
Для решения этих проблем существует технология хранения и обработки данных лидарной съемки в PostgreSQL/PostGIS c помощью библиотеки PDAL (Point Data Abstract Library)&amp;lt;ref name=&amp;quot;ttttest&amp;quot;&amp;gt;[http://www.pdal.io www.pdal.io], Официальная страница PDAL.&amp;lt;/ref&amp;gt;.&amp;lt;br /&amp;gt;&lt;br /&gt;
В статье использованы материалы лидарной съемки на территорию Нижнего Новгорода, представленные файлами в формате LAS (Logging ASCII Standard) на площади размером 1×1 км.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Файл:Lidar-data-nn-1.png]]&amp;lt;br /&amp;gt;&lt;br /&gt;
== Создание хранилища ==&lt;br /&gt;
Установка PostgreSQL/PostGIS для Windows описана на странице http://gis-lab.info/qa/postgis-install.html#02.&amp;lt;br /&amp;gt;&lt;br /&gt;
Прежде чем загрузить данные LIDAR в таблицу PostgreSQL, а затем сделать пространственный анализ с помощью PostGIS, необходимо скачать создать новую базу данных с соответствующими расширениями:&amp;lt;br /&amp;gt;&lt;br /&gt;
# Создать новую базу данных с именем «Lidar».&lt;br /&gt;
# Активировать расширения PointCloud, PostGIS и pointcloud_postgis&amp;lt;ref name=&amp;quot;tttest&amp;quot;&amp;gt;[http://s3.cleverelephant.ca/foss4gna2013-pointcloud.pdf s3.cleverelephant.ca], LIDAR in PostgreSQL with PointCloud.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE EXTENSION postgis;&lt;br /&gt;
CREATE EXTENSION pointcloud;&lt;br /&gt;
CREATE EXTENSION pointcloud_postgis;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
''Примечание: расширение Point Cloud устанавливается по умолчанию с PostGIS. Дополнительные настройки не требуются.''&lt;br /&gt;
== Импорт данных ==&lt;br /&gt;
Импорт данных происходит с помощью библиотеки PDAL. PDAL это библиотека для манипулирования данными облака точек. Она очень похожа на библиотеку GDAL, которая обрабатывает растровые и векторные данные. В дополнение к коду библиотеки, PDAL предоставляет набор приложений командной строки, которые пользователи могут удобно использовать для обработки облака точек. &amp;lt;br /&amp;gt;&lt;br /&gt;
=== Установка PDAL ===&lt;br /&gt;
Установить PDAL можно через OSGeo4W&amp;lt;ref name=&amp;quot;ttttestt&amp;quot;&amp;gt;[https://trac.osgeo.org/osgeo4w/ trac.osgeo.org/osgeo4w], Официальная страница OSGeo4W.&amp;lt;/ref&amp;gt;.&amp;lt;br /&amp;gt;&lt;br /&gt;
Для этого нужно скачать установщик с официального сайта OSGeo4W - https://trac.osgeo.org/osgeo4w/ и запустить его. Выбрать '''расширенную установку''' и следовать указаниям установщика. На вкладке «Выберите пакеты» в строке поиска ввести ''PDAL'' и начать установку.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Файл:Window-install-pdal.png]]&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Для проверки корректной работы PDAL, после установки, можно прочитать метаданные LAS-файла, выполнив команду:&lt;br /&gt;
&amp;lt;pre&amp;gt;pdal info --input H:\LIDAR\I_+1_+2_10.las --schema&amp;lt;/pre&amp;gt;&lt;br /&gt;
Результат выполнения команды показан на рисунке. Команда –schema показывает размеры и типы полей: X, Y, Z, Intensity, ReturnNumber, NumberOfReturns, ScanDirectionFlag, EdgeOfFlightLine, Classification, ScanAngleRank, UserData, PointSourceId и Time.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Файл:Metadata-las-2_2.png]]&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
=== Импорт данных в PostgreSQL через PDAL ===&lt;br /&gt;
Теперь необходимо создать файл загрузки для чтения LAS-файла, разбиения облака точек на блоки (например, по 400 точек), а затем записи блоков в базу данных.&amp;lt;br /&amp;gt;&lt;br /&gt;
Файлом загрузки PDAL является XML-файл, который описывает обработку данных. Для загрузки нам понадобятся три драйвера PDAL:&lt;br /&gt;
*writers.pgpointcloud – для чтения LAS-файла&lt;br /&gt;
*filters.chipper&lt;br /&gt;
*readers.las – для записи LAS-файла в базу данных &lt;br /&gt;
Создаем новый текстовый документ с именем «las2pg.xml» и расширением XML следующего вида&amp;lt;ref name=&amp;quot;test&amp;quot;&amp;gt;[http://workshops.boundlessgeo.com/tutorial-lidar/#loading-lidar-into-the-database workshops.boundlessgeo.com], Analyzing and Visualizing LIDAR.&amp;lt;/ref&amp;gt;:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Pipeline version=&amp;quot;1.0&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;Writer type=&amp;quot; writers.pgpointcloud &amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Option name=&amp;quot;connection&amp;quot;&amp;gt;dbname=lidar user=postgres&amp;lt;/Option&amp;gt;&lt;br /&gt;
    &amp;lt;Option name=&amp;quot;table&amp;quot;&amp;gt;medford&amp;lt;/Option&amp;gt;&lt;br /&gt;
    &amp;lt;Option name=&amp;quot;srid&amp;quot;&amp;gt;4326&amp;lt;/Option&amp;gt;&lt;br /&gt;
    &amp;lt;Filter type=&amp;quot; filters.chipper&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Option name=&amp;quot;capacity&amp;quot;&amp;gt;400&amp;lt;/Option&amp;gt;&lt;br /&gt;
        &amp;lt;Reader type=&amp;quot;readers.las&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;Option name=&amp;quot;filename&amp;quot;&amp;gt; H:\LIDAR\I_+1_+2_10.las&amp;lt;/Option&amp;gt;&lt;br /&gt;
          &amp;lt;Option name=&amp;quot;spatialreference&amp;quot;&amp;gt;EPSG:4326&amp;lt;/Option&amp;gt;&lt;br /&gt;
        &amp;lt;/Reader&amp;gt;&lt;br /&gt;
    &amp;lt;/Filter&amp;gt;&lt;br /&gt;
  &amp;lt;/Writer&amp;gt;&lt;br /&gt;
&amp;lt;/Pipeline&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
''Примечание: названия драйверов могут отличаться. Для своей версии PDAL узнать доступные драйвера можно с помощью команды pdal --drivers.''&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Теперь мы можем загрузить LAS-файл в базу данных. Для этого необходимо выполнить команду:&lt;br /&gt;
&amp;lt;pre&amp;gt;pdal pipeline H:\LIDAR\las2pg.xml&amp;lt;/pre&amp;gt;&lt;br /&gt;
После завершения процесса загрузки в базе данных «LIDAR» появится новая таблица «Medford» следующей структуры:&lt;br /&gt;
&amp;lt;pre&amp;gt;                      Table &amp;quot;public.medford&amp;quot;&lt;br /&gt;
 Column |    Type    |                      Modifiers&lt;br /&gt;
--------+------------+------------------------------------------------------&lt;br /&gt;
 id     | integer    | default nextval('medford_id_seq'::regclass)&lt;br /&gt;
 pa     | pcpatch    |&lt;br /&gt;
 Indexes:&lt;br /&gt;
    &amp;quot;medford_pkey&amp;quot; PRIMARY KEY(id)&amp;lt;/pre&amp;gt;&lt;br /&gt;
Хоть таблица и состоит из двух полей ID и PA, но в поле PA закодирована информация о точках лидара: X, Y, Z, Intensity, ReturnNumber, NumberOfReturns, Classification, ScanAngleRank, Red, Green, Blue. В одной записи хранится пространственная и атрибутивная информация четырехсот точек. &amp;lt;br /&amp;gt;&lt;br /&gt;
Для визуализации результата импорта можно воспользоваться любой ГИС с возможностью подключения к базе данных. Мы используем QGIS&amp;lt;ref name=&amp;quot;teeest&amp;quot;&amp;gt;[http://www.qgis.org/ru/site/ www.qgis.org], Официальная страница QGIS.&amp;lt;/ref&amp;gt;, где создано соединение с базой данных «Lidar».&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Файл:Look-patch-lidar-qgis-4.png‎]]&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Результатом такой технологии импорта данных LIDAR является существенное уменьшение размерности, по сравнению с обычным импортом графических слоев. Характеристики сравнения представлены в таблице.&amp;lt;br /&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Показатель !! Импорт в PostgreSQL/PostGIS через PDAL !! Импорт в PostgreSQL/PostGIS  LAS-файла&lt;br /&gt;
|-&lt;br /&gt;
| Количество записей || 1 864 || 931 919&lt;br /&gt;
|-&lt;br /&gt;
| Размер таблицы, MB || 9,9 || 197&lt;br /&gt;
|}&lt;br /&gt;
Таким образом импортирован один LAS-файл. Если таких файлов множество, есть два пути решения. Первый – объединить все LAS-файлы в один, например, с помощью набора программного обеспечения LAStools (LAStools(с) by Martin Isenburg), в частности программы las2las. Второй – написать собственный скрипт, который генерирует файлы загрузки и выполняет команду PDAL.&lt;br /&gt;
== Пространственный анализ ==&lt;br /&gt;
Формат вывода получившейся таблицы в PostgreSQL труден для восприятия, поэтому для пространственного анализа можно отформатировать таблицу с данными LIDAR.&amp;lt;br /&amp;gt;&lt;br /&gt;
Для обработки и анализа импортированных данных мы можем использовать встроенные функции в расширении PointCloud&amp;lt;ref name=&amp;quot;test&amp;quot; /&amp;gt;.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
-- Сколько точек в облаке (931919)&lt;br /&gt;
SELECT Sum(PC_NumPoints(pa))&lt;br /&gt;
FROM medford;&lt;br /&gt;
&lt;br /&gt;
-- Какова средняя высота первого блока? (151.95)&lt;br /&gt;
WITH pts AS (&lt;br /&gt;
  SELECT PC_Explode(pa) AS pt&lt;br /&gt;
  FROM medford LIMIT 1&lt;br /&gt;
)&lt;br /&gt;
SELECT Avg(PC_Get(pt,'Z')) FROM pts;&lt;br /&gt;
&lt;br /&gt;
-- Какой вид имеет первая точка?&lt;br /&gt;
WITH pts AS (&lt;br /&gt;
  SELECT PC_Explode(pa) AS pt&lt;br /&gt;
  FROM medford LIMIT 1&lt;br /&gt;
)&lt;br /&gt;
SELECT PC_AsText(pt) FROM pts LIMIT 1;&lt;br /&gt;
-- {&lt;br /&gt;
--  &amp;quot;pcid&amp;quot;:1,&lt;br /&gt;
--  &amp;quot;pt&amp;quot;:[255,1,1,0,0,2,0,0,10,556976,2250.04,1253.42,151.95]&lt;br /&gt;
-- }&lt;br /&gt;
&lt;br /&gt;
-- Сколько блоков? (1864)&lt;br /&gt;
SELECT Count(*)&lt;br /&gt;
FROM medford;&lt;br /&gt;
&lt;br /&gt;
-- Какая минимальная и максимальная высота в блоке? (141.78/ 204.33)&lt;br /&gt;
SELECT&lt;br /&gt;
  Min(PC_PatchMin(pa, 'z')) AS min,&lt;br /&gt;
  Max(PC_PatchMax(pa, 'z')) AS max&lt;br /&gt;
FROM medford;&lt;br /&gt;
-- Как выглядит геометрия блока?&lt;br /&gt;
SELECT st_asewkt(pa::geometry) FROM medford LIMIT 1;&lt;br /&gt;
-- SRID=4326;POLYGON((2250.04 1250.2,2250.04 1253.82,2258.88 1253.82,&lt;br /&gt;
-- 2258.88 1250.2,2250.04 1250.2))&lt;br /&gt;
&lt;br /&gt;
-- Как выглядит геометрия точки?&lt;br /&gt;
WITH pts AS (&lt;br /&gt;
  SELECT PC_Explode(pa) AS pt&lt;br /&gt;
  FROM medford LIMIT 1&lt;br /&gt;
)&lt;br /&gt;
SELECT ST_AsEWKT(pt::geometry) FROM pts LIMIT 1;&lt;br /&gt;
-- SRID=4326;POINT(2250.04 1253.42 151.95)&lt;br /&gt;
&lt;br /&gt;
-- Выбрать атрибуты точек: тип классификации, координаты Z,X,Y&lt;br /&gt;
WITH pts AS (&lt;br /&gt;
  SELECT PC_Explode(pa) AS pt&lt;br /&gt;
  FROM medford &lt;br /&gt;
)&lt;br /&gt;
SELECT PC_Get(pt,'Classification'),PC_Get(pt,'Z'), PC_Get(pt,'X'), PC_Get(pt,'Y') FROM pts LIMIT 1;&lt;br /&gt;
-- 2&lt;br /&gt;
-- 151.95&lt;br /&gt;
-- 2250.04&lt;br /&gt;
-- 1253.42&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
''Примечание: более подробную информацию о расширении Point Cloud и функциях SQL смотри в документации&amp;lt;ref name=&amp;quot;ttest&amp;quot;&amp;gt;[https://github.com/pgpointcloud/pointcloud github.com], A PostgreSQL extension for storing point cloud (LIDAR) data.&amp;lt;/ref&amp;gt;.''&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Анна Горева</name></author>
	</entry>
	<entry>
		<id>https://wiki.gis-lab.info/index.php?title=%D0%98%D0%BC%D0%BF%D0%BE%D1%80%D1%82_%D0%B8_%D0%B0%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85_%D0%BB%D0%B8%D0%B4%D0%B0%D1%80%D0%BD%D0%BE%D0%B9_%D1%81%D1%8A%D0%B5%D0%BC%D0%BA%D0%B8_%D0%B2_PostgreSQL/PostGIS_%D1%81_%D0%BF%D0%BE%D0%BC%D0%BE%D1%89%D1%8C%D1%8E_PDAL&amp;diff=24596</id>
		<title>Импорт и анализ данных лидарной съемки в PostgreSQL/PostGIS с помощью PDAL</title>
		<link rel="alternate" type="text/html" href="https://wiki.gis-lab.info/index.php?title=%D0%98%D0%BC%D0%BF%D0%BE%D1%80%D1%82_%D0%B8_%D0%B0%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85_%D0%BB%D0%B8%D0%B4%D0%B0%D1%80%D0%BD%D0%BE%D0%B9_%D1%81%D1%8A%D0%B5%D0%BC%D0%BA%D0%B8_%D0%B2_PostgreSQL/PostGIS_%D1%81_%D0%BF%D0%BE%D0%BC%D0%BE%D1%89%D1%8C%D1%8E_PDAL&amp;diff=24596"/>
		<updated>2016-11-08T08:27:44Z</updated>

		<summary type="html">&lt;p&gt;Анна Горева: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Статья|Черновик}}&lt;br /&gt;
{{Аннотация|Рассмотрен процесс импорта и анализа данных лидарной съемки в PostgreSQL с использованием технологии Point Cloud и библиотеки PDAL}}&lt;br /&gt;
&lt;br /&gt;
== Введение ==&lt;br /&gt;
Лидар (LIDAR - Light Identification, Detection and Ranging) – это технология получения и обработки информации дистанционного зондирования с проведением высокоточных измерений X, Y, Z координат. Обработанные и пространственно организованные данные лидарной съемки называют облаком точек – это огромные наборы высотных 3D точек, имеющих дополнительную атрибутику.&amp;lt;br /&amp;gt;&lt;br /&gt;
Данные LIDAR на территории городов или регионов могут содержать в себе миллиарды точек местности. Хранение их в базе данных в классическом виде как тип геометрии «точка» представляется возможным, но очень ресурсозатратным. Во-первых, огромное количество записей в таблице, что увеличивает время обработки данных. Во-вторых, большой объем памяти, занятый хранилищем.&amp;lt;br /&amp;gt;&lt;br /&gt;
Для решения этих проблем существует технология хранения и обработки данных лидарной съемки в PostgreSQL/PostGIS c помощью библиотеки PDAL (Point Data Abstract Library)&amp;lt;ref name=&amp;quot;ttttest&amp;quot;&amp;gt;[http://www.pdal.io www.pdal.io], Официальная страница PDAL.&amp;lt;/ref&amp;gt;.&amp;lt;br /&amp;gt;&lt;br /&gt;
В статье использованы материалы лидарной съемки на территорию Нижнего Новгорода, представленные файлами в формате LAS (Logging ASCII Standard) на площади размером 1×1 км.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Файл:Lidar-data-nn-1.png]]&amp;lt;br /&amp;gt;&lt;br /&gt;
== Создание хранилища ==&lt;br /&gt;
Установка PostgreSQL/PostGIS для Windows описана на странице http://gis-lab.info/qa/postgis-install.html#02.&amp;lt;br /&amp;gt;&lt;br /&gt;
Прежде чем загрузить данные LIDAR в таблицу PostgreSQL, а затем сделать пространственный анализ с помощью PostGIS, необходимо создать новую базу данных с соответствующими расширениями:&amp;lt;br /&amp;gt;&lt;br /&gt;
# Создать новую базу данных с именем «Lidar».&lt;br /&gt;
# Создать расширения PointCloud, PostGIS и pointcloud_postgis&amp;lt;ref name=&amp;quot;tttest&amp;quot;&amp;gt;[http://s3.cleverelephant.ca/foss4gna2013-pointcloud.pdf s3.cleverelephant.ca], LIDAR in PostgreSQL with PointCloud.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE EXTENSION postgis;&lt;br /&gt;
CREATE EXTENSION pointcloud;&lt;br /&gt;
CREATE EXTENSION pointcloud_postgis;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
== Импорт данных ==&lt;br /&gt;
Импорт данных происходит с помощью библиотеки PDAL. PDAL это библиотека для манипулирования данными облака точек. Она очень похожа на библиотеку GDAL, которая обрабатывает растровые и векторные данные. В дополнение к коду библиотеки, PDAL предоставляет набор приложений командной строки, которые пользователи могут удобно использовать для обработки облака точек. &amp;lt;br /&amp;gt;&lt;br /&gt;
=== Установка PDAL ===&lt;br /&gt;
Установить PDAL можно через OSGeo4W&amp;lt;ref name=&amp;quot;ttttestt&amp;quot;&amp;gt;[https://trac.osgeo.org/osgeo4w/ trac.osgeo.org/osgeo4w], Официальная страница OSGeo4W.&amp;lt;/ref&amp;gt;.&amp;lt;br /&amp;gt;&lt;br /&gt;
Для этого нужно скачать установщик с официального сайта OSGeo4W - https://trac.osgeo.org/osgeo4w/ и запустить его. Выбрать '''расширенную установку''' и следовать указаниям установщика. На вкладке «Выберите пакеты» в строке поиска ввести ''PDAL'' и начать установку.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Файл:Window-install-pdal.png]]&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Для проверки корректной работы PDAL, после установки, можно прочитать метаданные LAS-файла, выполнив команду:&lt;br /&gt;
&amp;lt;pre&amp;gt;pdal info --input H:\LIDAR\I_+1_+2_10.las --schema&amp;lt;/pre&amp;gt;&lt;br /&gt;
Результат выполнения команды показан на рисунке. Команда –schema показывает размеры и типы полей: X, Y, Z, Intensity, ReturnNumber, NumberOfReturns, ScanDirectionFlag, EdgeOfFlightLine, Classification, ScanAngleRank, UserData, PointSourceId и Time.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Файл:Metadata-las-2_2.png]]&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
=== Импорт данных в PostgreSQL через PDAL ===&lt;br /&gt;
Теперь необходимо создать файл загрузки для чтения LAS-файла, разбиения облака точек на блоки (например, по 400 точек), а затем записи блоков в базу данных.&amp;lt;br /&amp;gt;&lt;br /&gt;
Файлом загрузки PDAL является XML-файл, который описывает обработку данных. Для загрузки нам понадобятся три драйвера PDAL:&lt;br /&gt;
*writers.pgpointcloud – для чтения LAS-файла&lt;br /&gt;
*filters.chipper&lt;br /&gt;
*readers.las – для записи LAS-файла в базу данных &lt;br /&gt;
Создаем новый текстовый документ с именем «las2pg.xml» и расширением XML следующего вида&amp;lt;ref name=&amp;quot;test&amp;quot;&amp;gt;[http://workshops.boundlessgeo.com/tutorial-lidar/#loading-lidar-into-the-database workshops.boundlessgeo.com], Analyzing and Visualizing LIDAR.&amp;lt;/ref&amp;gt;:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Pipeline version=&amp;quot;1.0&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;Writer type=&amp;quot; writers.pgpointcloud &amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Option name=&amp;quot;connection&amp;quot;&amp;gt;dbname=lidar user=postgres&amp;lt;/Option&amp;gt;&lt;br /&gt;
    &amp;lt;Option name=&amp;quot;table&amp;quot;&amp;gt;medford&amp;lt;/Option&amp;gt;&lt;br /&gt;
    &amp;lt;Option name=&amp;quot;srid&amp;quot;&amp;gt;4326&amp;lt;/Option&amp;gt;&lt;br /&gt;
    &amp;lt;Filter type=&amp;quot; filters.chipper&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Option name=&amp;quot;capacity&amp;quot;&amp;gt;400&amp;lt;/Option&amp;gt;&lt;br /&gt;
        &amp;lt;Reader type=&amp;quot;readers.las&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;Option name=&amp;quot;filename&amp;quot;&amp;gt; H:\LIDAR\I_+1_+2_10.las&amp;lt;/Option&amp;gt;&lt;br /&gt;
          &amp;lt;Option name=&amp;quot;spatialreference&amp;quot;&amp;gt;EPSG:4326&amp;lt;/Option&amp;gt;&lt;br /&gt;
        &amp;lt;/Reader&amp;gt;&lt;br /&gt;
    &amp;lt;/Filter&amp;gt;&lt;br /&gt;
  &amp;lt;/Writer&amp;gt;&lt;br /&gt;
&amp;lt;/Pipeline&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
''Примечание: названия драйверов могут отличаться. Для своей версии PDAL узнать доступные драйвера можно с помощью команды pdal --drivers.''&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Теперь мы можем загрузить LAS-файл в базу данных. Для этого необходимо выполнить команду:&lt;br /&gt;
&amp;lt;pre&amp;gt;pdal pipeline H:\LIDAR\las2pg.xml&amp;lt;/pre&amp;gt;&lt;br /&gt;
После завершения процесса загрузки в базе данных «LIDAR» появится новая таблица «Medford» следующей структуры:&lt;br /&gt;
&amp;lt;pre&amp;gt;                      Table &amp;quot;public.medford&amp;quot;&lt;br /&gt;
 Column |    Type    |                      Modifiers&lt;br /&gt;
--------+------------+------------------------------------------------------&lt;br /&gt;
 id     | integer    | default nextval('medford_id_seq'::regclass)&lt;br /&gt;
 pa     | pcpatch    |&lt;br /&gt;
 Indexes:&lt;br /&gt;
    &amp;quot;medford_pkey&amp;quot; PRIMARY KEY(id)&amp;lt;/pre&amp;gt;&lt;br /&gt;
Хоть таблица и состоит из двух полей ID и PA, но в поле PA закодирована информация о точках лидара: X, Y, Z, Intensity, ReturnNumber, NumberOfReturns, Classification, ScanAngleRank, Red, Green, Blue. В одной записи хранится пространственная и атрибутивная информация четырехсот точек. &amp;lt;br /&amp;gt;&lt;br /&gt;
Для визуализации результата импорта можно воспользоваться любой ГИС с возможностью подключения к базе данных. Мы используем QGIS&amp;lt;ref name=&amp;quot;teeest&amp;quot;&amp;gt;[http://www.qgis.org/ru/site/ www.qgis.org], Официальная страница QGIS.&amp;lt;/ref&amp;gt;, где создано соединение с базой данных «Lidar».&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Файл:Look-patch-lidar-qgis-4.png‎]]&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Результатом такой технологии импорта данных LIDAR является существенное уменьшение размерности, по сравнению с обычным импортом графических слоев. Характеристики сравнения представлены в таблице.&amp;lt;br /&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Показатель !! Импорт в PostgreSQL/PostGIS через PDAL !! Импорт в PostgreSQL/PostGIS  LAS-файла&lt;br /&gt;
|-&lt;br /&gt;
| Количество записей || 1 864 || 931 919&lt;br /&gt;
|-&lt;br /&gt;
| Размер таблицы, MB || 9,9 || 197&lt;br /&gt;
|}&lt;br /&gt;
Таким образом импортирован один LAS-файл. Если таких файлов множество, есть два пути решения. Первый – объединить все LAS-файлы в один, например, с помощью набора программного обеспечения LAStools (LAStools(с) by Martin Isenburg), в частности программы las2las. Второй – написать собственный скрипт, который генерирует файлы загрузки и выполняет команду PDAL.&lt;br /&gt;
== Пространственный анализ ==&lt;br /&gt;
Формат вывода получившейся таблицы в PostgreSQL труден для восприятия, поэтому для пространственного анализа можно отформатировать таблицу с данными LIDAR.&amp;lt;br /&amp;gt;&lt;br /&gt;
Для обработки и анализа импортированных данных мы можем использовать встроенные функции в расширении PointCloud&amp;lt;ref name=&amp;quot;test&amp;quot; /&amp;gt;.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
-- Сколько точек в облаке (931919)&lt;br /&gt;
SELECT Sum(PC_NumPoints(pa))&lt;br /&gt;
FROM medford;&lt;br /&gt;
&lt;br /&gt;
-- Какова средняя высота первого блока? (151.95)&lt;br /&gt;
WITH pts AS (&lt;br /&gt;
  SELECT PC_Explode(pa) AS pt&lt;br /&gt;
  FROM medford LIMIT 1&lt;br /&gt;
)&lt;br /&gt;
SELECT Avg(PC_Get(pt,'Z')) FROM pts;&lt;br /&gt;
&lt;br /&gt;
-- Какой вид имеет первая точка?&lt;br /&gt;
WITH pts AS (&lt;br /&gt;
  SELECT PC_Explode(pa) AS pt&lt;br /&gt;
  FROM medford LIMIT 1&lt;br /&gt;
)&lt;br /&gt;
SELECT PC_AsText(pt) FROM pts LIMIT 1;&lt;br /&gt;
-- {&lt;br /&gt;
--  &amp;quot;pcid&amp;quot;:1,&lt;br /&gt;
--  &amp;quot;pt&amp;quot;:[255,1,1,0,0,2,0,0,10,556976,2250.04,1253.42,151.95]&lt;br /&gt;
-- }&lt;br /&gt;
&lt;br /&gt;
-- Сколько блоков? (1864)&lt;br /&gt;
SELECT Count(*)&lt;br /&gt;
FROM medford;&lt;br /&gt;
&lt;br /&gt;
-- Какая минимальная и максимальная высота в блоке? (141.78/ 204.33)&lt;br /&gt;
SELECT&lt;br /&gt;
  Min(PC_PatchMin(pa, 'z')) AS min,&lt;br /&gt;
  Max(PC_PatchMax(pa, 'z')) AS max&lt;br /&gt;
FROM medford;&lt;br /&gt;
-- Как выглядит геометрия блока?&lt;br /&gt;
SELECT st_asewkt(pa::geometry) FROM medford LIMIT 1;&lt;br /&gt;
-- SRID=4326;POLYGON((2250.04 1250.2,2250.04 1253.82,2258.88 1253.82,&lt;br /&gt;
-- 2258.88 1250.2,2250.04 1250.2))&lt;br /&gt;
&lt;br /&gt;
-- Как выглядит геометрия точки?&lt;br /&gt;
WITH pts AS (&lt;br /&gt;
  SELECT PC_Explode(pa) AS pt&lt;br /&gt;
  FROM medford LIMIT 1&lt;br /&gt;
)&lt;br /&gt;
SELECT ST_AsEWKT(pt::geometry) FROM pts LIMIT 1;&lt;br /&gt;
-- SRID=4326;POINT(2250.04 1253.42 151.95)&lt;br /&gt;
&lt;br /&gt;
-- Выбрать атрибуты точек: тип классификации, координаты Z,X,Y&lt;br /&gt;
WITH pts AS (&lt;br /&gt;
  SELECT PC_Explode(pa) AS pt&lt;br /&gt;
  FROM medford &lt;br /&gt;
)&lt;br /&gt;
SELECT PC_Get(pt,'Classification'),PC_Get(pt,'Z'), PC_Get(pt,'X'), PC_Get(pt,'Y') FROM pts LIMIT 1;&lt;br /&gt;
-- 2&lt;br /&gt;
-- 151.95&lt;br /&gt;
-- 2250.04&lt;br /&gt;
-- 1253.42&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
''Примечание: более подробную информацию о расширении Point Cloud и функциях SQL смотри в документации&amp;lt;ref name=&amp;quot;ttest&amp;quot;&amp;gt;[https://github.com/pgpointcloud/pointcloud github.com], A PostgreSQL extension for storing point cloud (LIDAR) data.&amp;lt;/ref&amp;gt;.''&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Ссылки по теме:&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Анна Горева</name></author>
	</entry>
	<entry>
		<id>https://wiki.gis-lab.info/index.php?title=%D0%98%D0%BC%D0%BF%D0%BE%D1%80%D1%82_%D0%B8_%D0%B0%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85_%D0%BB%D0%B8%D0%B4%D0%B0%D1%80%D0%BD%D0%BE%D0%B9_%D1%81%D1%8A%D0%B5%D0%BC%D0%BA%D0%B8_%D0%B2_PostgreSQL/PostGIS_%D1%81_%D0%BF%D0%BE%D0%BC%D0%BE%D1%89%D1%8C%D1%8E_PDAL&amp;diff=24593</id>
		<title>Импорт и анализ данных лидарной съемки в PostgreSQL/PostGIS с помощью PDAL</title>
		<link rel="alternate" type="text/html" href="https://wiki.gis-lab.info/index.php?title=%D0%98%D0%BC%D0%BF%D0%BE%D1%80%D1%82_%D0%B8_%D0%B0%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85_%D0%BB%D0%B8%D0%B4%D0%B0%D1%80%D0%BD%D0%BE%D0%B9_%D1%81%D1%8A%D0%B5%D0%BC%D0%BA%D0%B8_%D0%B2_PostgreSQL/PostGIS_%D1%81_%D0%BF%D0%BE%D0%BC%D0%BE%D1%89%D1%8C%D1%8E_PDAL&amp;diff=24593"/>
		<updated>2016-11-08T08:02:35Z</updated>

		<summary type="html">&lt;p&gt;Анна Горева: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Статья|Черновик}}&lt;br /&gt;
{{Аннотация|Рассмотрен процесс импорта и анализа данных лидарной съемки в PostgreSQL с использованием технологии Point Cloud и библиотеки PDAL}}&lt;br /&gt;
&lt;br /&gt;
== Введение ==&lt;br /&gt;
Лидар (LIDAR - Light Identification, Detection and Ranging) – это технология получения и обработки информации дистанционного зондирования с проведением высокоточных измерений X, Y, Z координат. Обработанные и пространственно организованные данные лидарной съемки называют облаком точек – это огромные наборы высотных 3D точек, имеющих дополнительную атрибутику.&amp;lt;br /&amp;gt;&lt;br /&gt;
Данные LIDAR на территории городов или регионов могут содержать в себе миллиарды точек местности. Хранение их в базе данных в классическом виде как тип геометрии «точка» представляется возможным, но очень ресурсозатратным. Во-первых, огромное количество записей в таблице, что увеличивает время обработки данных. Во-вторых, большой объем памяти, занятый хранилищем.&amp;lt;br /&amp;gt;&lt;br /&gt;
Для решения этих проблем существует технология хранения и обработки данных лидарной съемки в PostgreSQL/PostGIS c помощью библиотеки PDAL (Point Data Abstract Library)&amp;lt;ref name=&amp;quot;ttttest&amp;quot;&amp;gt;[http://www.pdal.io www.pdal.io], Официальная страница PDAL.&amp;lt;/ref&amp;gt;.&amp;lt;br /&amp;gt;&lt;br /&gt;
В статье использованы материалы лидарной съемки на территорию Нижнего Новгорода, представленные файлами в формате LAS (Logging ASCII Standard) на площади размером 1×1 км.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Файл:Lidar-data-nn-1.png]]&amp;lt;br /&amp;gt;&lt;br /&gt;
== Создание хранилища ==&lt;br /&gt;
Прежде чем загрузить данные LIDAR в таблицу PostgreSQL, а затем сделать пространственный анализ с помощью PostGIS, необходимо создать новую базу данных с соответствующими расширениями:&amp;lt;br /&amp;gt;&lt;br /&gt;
# Создать новую базу данных с именем «Lidar».&lt;br /&gt;
# Создать расширения PointCloud, PostGIS и pointcloud_postgis&amp;lt;ref name=&amp;quot;tttest&amp;quot;&amp;gt;[http://s3.cleverelephant.ca/foss4gna2013-pointcloud.pdf s3.cleverelephant.ca], LIDAR in PostgreSQL with PointCloud.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE EXTENSION postgis;&lt;br /&gt;
CREATE EXTENSION pointcloud;&lt;br /&gt;
CREATE EXTENSION pointcloud_postgis;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
== Импорт данных ==&lt;br /&gt;
Импорт данных происходит с помощью библиотеки PDAL. PDAL это библиотека для манипулирования данными облака точек. Она очень похожа на библиотеку GDAL, которая обрабатывает растровые и векторные данные. В дополнение к коду библиотеки, PDAL предоставляет набор приложений командной строки, которые пользователи могут удобно использовать для обработки облака точек. &amp;lt;br /&amp;gt;&lt;br /&gt;
=== Установка PDAL ===&lt;br /&gt;
Установить PDAL можно через OSGeo4W&amp;lt;ref name=&amp;quot;ttttestt&amp;quot;&amp;gt;[https://trac.osgeo.org/osgeo4w/ trac.osgeo.org/osgeo4w], Официальная страница OSGeo4W.&amp;lt;/ref&amp;gt;.&amp;lt;br /&amp;gt;&lt;br /&gt;
Для этого нужно скачать установщик с официального сайта OSGeo4W - https://trac.osgeo.org/osgeo4w/ и запустить его. Выбрать '''расширенную установку''' и следовать указаниям установщика. На вкладке «Выберите пакеты» в строке поиска ввести ''PDAL'' и начать установку.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Файл:Window-install-pdal.png]]&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Для проверки корректной работы PDAL, после установки, можно прочитать метаданные LAS-файла, выполнив команду:&lt;br /&gt;
&amp;lt;pre&amp;gt;pdal info --input H:\LIDAR\I_+1_+2_10.las --schema&amp;lt;/pre&amp;gt;&lt;br /&gt;
Результат выполнения команды показан на рисунке. Команда –schema показывает размеры и типы полей: X, Y, Z, Intensity, ReturnNumber, NumberOfReturns, ScanDirectionFlag, EdgeOfFlightLine, Classification, ScanAngleRank, UserData, PointSourceId и Time.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Файл:Metadata-las-2_2.png]]&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
=== Импорт данных в PostgreSQL через PDAL ===&lt;br /&gt;
Теперь необходимо создать файл загрузки для чтения LAS-файла, разбиения облака точек на блоки (например, по 400 точек), а затем записи блоков в базу данных.&amp;lt;br /&amp;gt;&lt;br /&gt;
Файлом загрузки PDAL является XML-файл, который описывает обработку данных. Для загрузки нам понадобятся три драйвера PDAL:&lt;br /&gt;
*writers.pgpointcloud – для чтения LAS-файла&lt;br /&gt;
*filters.chipper&lt;br /&gt;
*readers.las – для записи LAS-файла в базу данных &lt;br /&gt;
Создаем новый текстовый документ с именем «las2pg.xml» и расширением XML следующего вида&amp;lt;ref name=&amp;quot;test&amp;quot;&amp;gt;[http://workshops.boundlessgeo.com/tutorial-lidar/#loading-lidar-into-the-database workshops.boundlessgeo.com], Analyzing and Visualizing LIDAR.&amp;lt;/ref&amp;gt;:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Pipeline version=&amp;quot;1.0&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;Writer type=&amp;quot; writers.pgpointcloud &amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Option name=&amp;quot;connection&amp;quot;&amp;gt;dbname=lidar user=postgres&amp;lt;/Option&amp;gt;&lt;br /&gt;
    &amp;lt;Option name=&amp;quot;table&amp;quot;&amp;gt;medford&amp;lt;/Option&amp;gt;&lt;br /&gt;
    &amp;lt;Option name=&amp;quot;srid&amp;quot;&amp;gt;4326&amp;lt;/Option&amp;gt;&lt;br /&gt;
    &amp;lt;Filter type=&amp;quot; filters.chipper&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Option name=&amp;quot;capacity&amp;quot;&amp;gt;400&amp;lt;/Option&amp;gt;&lt;br /&gt;
        &amp;lt;Reader type=&amp;quot;readers.las&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;Option name=&amp;quot;filename&amp;quot;&amp;gt; H:\LIDAR\I_+1_+2_10.las&amp;lt;/Option&amp;gt;&lt;br /&gt;
          &amp;lt;Option name=&amp;quot;spatialreference&amp;quot;&amp;gt;EPSG:4326&amp;lt;/Option&amp;gt;&lt;br /&gt;
        &amp;lt;/Reader&amp;gt;&lt;br /&gt;
    &amp;lt;/Filter&amp;gt;&lt;br /&gt;
  &amp;lt;/Writer&amp;gt;&lt;br /&gt;
&amp;lt;/Pipeline&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
''Примечание: названия драйверов могут отличаться. Для своей версии PDAL узнать доступные драйвера можно с помощью команды pdal --drivers.''&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Теперь мы можем загрузить LAS-файл в базу данных. Для этого необходимо выполнить команду:&lt;br /&gt;
&amp;lt;pre&amp;gt;pdal pipeline H:\LIDAR\las2pg.xml&amp;lt;/pre&amp;gt;&lt;br /&gt;
После завершения процесса загрузки в базе данных «LIDAR» появится новая таблица «Medford» следующей структуры:&lt;br /&gt;
&amp;lt;pre&amp;gt;                      Table &amp;quot;public.medford&amp;quot;&lt;br /&gt;
 Column |    Type    |                      Modifiers&lt;br /&gt;
--------+------------+------------------------------------------------------&lt;br /&gt;
 id     | integer    | default nextval('medford_id_seq'::regclass)&lt;br /&gt;
 pa     | pcpatch    |&lt;br /&gt;
 Indexes:&lt;br /&gt;
    &amp;quot;medford_pkey&amp;quot; PRIMARY KEY(id)&amp;lt;/pre&amp;gt;&lt;br /&gt;
Хоть таблица и состоит из двух полей ID и PA, но в поле PA закодирована информация о точках лидара: X, Y, Z, Intensity, ReturnNumber, NumberOfReturns, Classification, ScanAngleRank, Red, Green, Blue. В одной записи хранится пространственная и атрибутивная информация четырехсот точек. &amp;lt;br /&amp;gt;&lt;br /&gt;
Для визуализации результата импорта можно воспользоваться любой ГИС с возможностью подключения к базе данных. Мы используем QGIS&amp;lt;ref name=&amp;quot;teeest&amp;quot;&amp;gt;[http://www.qgis.org/ru/site/ www.qgis.org], Официальная страница QGIS.&amp;lt;/ref&amp;gt;, где создано соединение с базой данных «Lidar».&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Файл:Look-patch-lidar-qgis-4.png‎]]&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Результатом такой технологии импорта данных LIDAR является существенное уменьшение размерности, по сравнению с обычным импортом графических слоев. Характеристики сравнения представлены в таблице.&amp;lt;br /&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Показатель !! Импорт в PostgreSQL/PostGIS через PDAL !! Импорт в PostgreSQL/PostGIS  LAS-файла&lt;br /&gt;
|-&lt;br /&gt;
| Количество записей || 1 864 || 931 919&lt;br /&gt;
|-&lt;br /&gt;
| Размер таблицы, MB || 9,9 || 197&lt;br /&gt;
|}&lt;br /&gt;
Таким образом импортирован один LAS-файл. Если таких файлов множество, есть два пути решения. Первый – объединить все LAS-файлы в один, например, с помощью набора программного обеспечения LAStools (LAStools(с) by Martin Isenburg), в частности программы las2las. Второй – написать собственный скрипт, который генерирует файлы загрузки и выполняет команду PDAL.&lt;br /&gt;
== Пространственный анализ ==&lt;br /&gt;
Формат вывода получившейся таблицы в PostgreSQL труден для восприятия, поэтому для пространственного анализа можно отформатировать таблицу с данными LIDAR.&amp;lt;br /&amp;gt;&lt;br /&gt;
Для обработки и анализа импортированных данных мы можем использовать встроенные функции в расширении PointCloud&amp;lt;ref name=&amp;quot;test&amp;quot; /&amp;gt;.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
-- Сколько точек в облаке (931919)&lt;br /&gt;
SELECT Sum(PC_NumPoints(pa))&lt;br /&gt;
FROM medford;&lt;br /&gt;
&lt;br /&gt;
-- Какова средняя высота первого блока? (151.95)&lt;br /&gt;
WITH pts AS (&lt;br /&gt;
  SELECT PC_Explode(pa) AS pt&lt;br /&gt;
  FROM medford LIMIT 1&lt;br /&gt;
)&lt;br /&gt;
SELECT Avg(PC_Get(pt,'Z')) FROM pts;&lt;br /&gt;
&lt;br /&gt;
-- Какой вид имеет первая точка?&lt;br /&gt;
WITH pts AS (&lt;br /&gt;
  SELECT PC_Explode(pa) AS pt&lt;br /&gt;
  FROM medford LIMIT 1&lt;br /&gt;
)&lt;br /&gt;
SELECT PC_AsText(pt) FROM pts LIMIT 1;&lt;br /&gt;
-- {&lt;br /&gt;
--  &amp;quot;pcid&amp;quot;:1,&lt;br /&gt;
--  &amp;quot;pt&amp;quot;:[255,1,1,0,0,2,0,0,10,556976,2250.04,1253.42,151.95]&lt;br /&gt;
-- }&lt;br /&gt;
&lt;br /&gt;
-- Сколько блоков? (1864)&lt;br /&gt;
SELECT Count(*)&lt;br /&gt;
FROM medford;&lt;br /&gt;
&lt;br /&gt;
-- Какая минимальная и максимальная высота в блоке? (141.78/ 204.33)&lt;br /&gt;
SELECT&lt;br /&gt;
  Min(PC_PatchMin(pa, 'z')) AS min,&lt;br /&gt;
  Max(PC_PatchMax(pa, 'z')) AS max&lt;br /&gt;
FROM medford;&lt;br /&gt;
-- Как выглядит геометрия блока?&lt;br /&gt;
SELECT st_asewkt(pa::geometry) FROM medford LIMIT 1;&lt;br /&gt;
-- SRID=4326;POLYGON((2250.04 1250.2,2250.04 1253.82,2258.88 1253.82,&lt;br /&gt;
-- 2258.88 1250.2,2250.04 1250.2))&lt;br /&gt;
&lt;br /&gt;
-- Как выглядит геометрия точки?&lt;br /&gt;
WITH pts AS (&lt;br /&gt;
  SELECT PC_Explode(pa) AS pt&lt;br /&gt;
  FROM medford LIMIT 1&lt;br /&gt;
)&lt;br /&gt;
SELECT ST_AsEWKT(pt::geometry) FROM pts LIMIT 1;&lt;br /&gt;
-- SRID=4326;POINT(2250.04 1253.42 151.95)&lt;br /&gt;
&lt;br /&gt;
-- Выбрать атрибуты точек: тип классификации, координаты Z,X,Y&lt;br /&gt;
WITH pts AS (&lt;br /&gt;
  SELECT PC_Explode(pa) AS pt&lt;br /&gt;
  FROM medford &lt;br /&gt;
)&lt;br /&gt;
SELECT PC_Get(pt,'Classification'),PC_Get(pt,'Z'), PC_Get(pt,'X'), PC_Get(pt,'Y') FROM pts LIMIT 1;&lt;br /&gt;
-- 2&lt;br /&gt;
-- 151.95&lt;br /&gt;
-- 2250.04&lt;br /&gt;
-- 1253.42&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
''Примечание: более подробную информацию о расширении Point Cloud и функциях SQL смотри в документации&amp;lt;ref name=&amp;quot;ttest&amp;quot;&amp;gt;[https://github.com/pgpointcloud/pointcloud github.com], A PostgreSQL extension for storing point cloud (LIDAR) data.&amp;lt;/ref&amp;gt;.''&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Ссылки по теме:&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Анна Горева</name></author>
	</entry>
	<entry>
		<id>https://wiki.gis-lab.info/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Window-install-pdal.png&amp;diff=24590</id>
		<title>Файл:Window-install-pdal.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.gis-lab.info/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Window-install-pdal.png&amp;diff=24590"/>
		<updated>2016-11-08T07:58:19Z</updated>

		<summary type="html">&lt;p&gt;Анна Горева: Диалоговое окно установки PDAL&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Диалоговое окно установки PDAL&lt;/div&gt;</summary>
		<author><name>Анна Горева</name></author>
	</entry>
	<entry>
		<id>https://wiki.gis-lab.info/index.php?title=%D0%98%D0%BC%D0%BF%D0%BE%D1%80%D1%82_%D0%B8_%D0%B0%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85_%D0%BB%D0%B8%D0%B4%D0%B0%D1%80%D0%BD%D0%BE%D0%B9_%D1%81%D1%8A%D0%B5%D0%BC%D0%BA%D0%B8_%D0%B2_PostgreSQL/PostGIS_%D1%81_%D0%BF%D0%BE%D0%BC%D0%BE%D1%89%D1%8C%D1%8E_PDAL&amp;diff=24588</id>
		<title>Импорт и анализ данных лидарной съемки в PostgreSQL/PostGIS с помощью PDAL</title>
		<link rel="alternate" type="text/html" href="https://wiki.gis-lab.info/index.php?title=%D0%98%D0%BC%D0%BF%D0%BE%D1%80%D1%82_%D0%B8_%D0%B0%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85_%D0%BB%D0%B8%D0%B4%D0%B0%D1%80%D0%BD%D0%BE%D0%B9_%D1%81%D1%8A%D0%B5%D0%BC%D0%BA%D0%B8_%D0%B2_PostgreSQL/PostGIS_%D1%81_%D0%BF%D0%BE%D0%BC%D0%BE%D1%89%D1%8C%D1%8E_PDAL&amp;diff=24588"/>
		<updated>2016-11-08T06:45:52Z</updated>

		<summary type="html">&lt;p&gt;Анна Горева: Добавлены ссылки по теме&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Статья|Черновик}}&lt;br /&gt;
{{Аннотация|Рассмотрен процесс импорта и анализа данных лидарной съемки в PostgreSQL с использованием технологии Point Cloud и библиотеки PDAL}}&lt;br /&gt;
&lt;br /&gt;
== Введение ==&lt;br /&gt;
Лидар (LIDAR - Light Identification, Detection and Ranging) – это технология получения и обработки информации дистанционного зондирования с проведением высокоточных измерений X, Y, Z координат. Обработанные и пространственно организованные данные лидарной съемки называют облаком точек – это огромные наборы высотных 3D точек, имеющих дополнительную атрибутику.&amp;lt;br /&amp;gt;&lt;br /&gt;
Данные LIDAR на территории городов или регионов могут содержать в себе миллиарды точек местности. Хранение их в базе данных в классическом виде как тип геометрии «точка» представляется возможным, но очень ресурсозатратным. Во-первых, огромное количество записей в таблице, что увеличивает время обработки данных. Во-вторых, большой объем памяти, занятый хранилищем.&amp;lt;br /&amp;gt;&lt;br /&gt;
Для решения этих проблем существует технология хранения и обработки данных лидарной съемки в PostgreSQL/PostGIS c помощью библиотеки PDAL (Point Data Abstract Library).&amp;lt;br /&amp;gt;&lt;br /&gt;
В статье использованы материалы лидарной съемки на территорию Нижнего Новгорода, представленные файлами в формате LAS (Logging ASCII Standard) на площади размером 1×1 км.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Файл:Lidar-data-nn-1.png]]&amp;lt;br /&amp;gt;&lt;br /&gt;
== Создание хранилища ==&lt;br /&gt;
Прежде чем загрузить данные LIDAR в таблицу PostgreSQL, а затем сделать пространственный анализ с помощью PostGIS, необходимо создать новую базу данных с соответствующими расширениями:&amp;lt;br /&amp;gt;&lt;br /&gt;
# Создать новую базу данных с именем «Lidar».&lt;br /&gt;
# Создать расширения PointCloud, PostGIS и pointcloud_postgis&amp;lt;ref name=&amp;quot;tttest&amp;quot;&amp;gt;[http://s3.cleverelephant.ca/foss4gna2013-pointcloud.pdf s3.cleverelephant.ca], LIDAR in PostgreSQL with PointCloud.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE EXTENSION postgis;&lt;br /&gt;
CREATE EXTENSION pointcloud;&lt;br /&gt;
CREATE EXTENSION pointcloud_postgis;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
== Импорт данных ==&lt;br /&gt;
Импорт данных происходит с помощью библиотеки PDAL. PDAL это библиотека для манипулирования данными облака точек. Она очень похожа на библиотеку GDAL, которая обрабатывает растровые и векторные данные. В дополнение к коду библиотеки, PDAL предоставляет набор приложений командной строки, которые пользователи могут удобно использовать для обработки облака точек. Установить PDAL можно через OSGeo4W.&amp;lt;br /&amp;gt;&lt;br /&gt;
Для проверки корректной работы PDAL, после установки, можно прочитать метаданные LAS-файла, выполнив команду:&lt;br /&gt;
&amp;lt;pre&amp;gt;pdal info --input H:\LIDAR\I_+1_+2_10.las --schema&amp;lt;/pre&amp;gt;&lt;br /&gt;
Результат выполнения команды показан на рисунке. Команда –schema показывает размеры и типы полей: X, Y, Z, Intensity, ReturnNumber, NumberOfReturns, ScanDirectionFlag, EdgeOfFlightLine, Classification, ScanAngleRank, UserData, PointSourceId и Time.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Файл:Metadata-las-2_2.png]]&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Теперь необходимо создать файл загрузки для чтения LAS-файла, разбиения облака точек на блоки (например, по 400 точек), а затем записи блоков в базу данных.&amp;lt;br /&amp;gt;&lt;br /&gt;
Файлом загрузки PDAL является XML-файл, который описывает обработку данных. Для загрузки нам понадобятся три драйвера PDAL:&lt;br /&gt;
*writers.pgpointcloud – для чтения LAS-файла&lt;br /&gt;
*filters.chipper&lt;br /&gt;
*readers.las – для записи LAS-файла в базу данных &lt;br /&gt;
Создаем новый текстовый документ с именем «las2pg.xml» и расширением XML следующего вида&amp;lt;ref name=&amp;quot;test&amp;quot;&amp;gt;[http://workshops.boundlessgeo.com/tutorial-lidar/#loading-lidar-into-the-database workshops.boundlessgeo.com], Analyzing and Visualizing LIDAR.&amp;lt;/ref&amp;gt;:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Pipeline version=&amp;quot;1.0&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;Writer type=&amp;quot; writers.pgpointcloud &amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Option name=&amp;quot;connection&amp;quot;&amp;gt;dbname=lidar user=postgres&amp;lt;/Option&amp;gt;&lt;br /&gt;
    &amp;lt;Option name=&amp;quot;table&amp;quot;&amp;gt;medford&amp;lt;/Option&amp;gt;&lt;br /&gt;
    &amp;lt;Option name=&amp;quot;srid&amp;quot;&amp;gt;4326&amp;lt;/Option&amp;gt;&lt;br /&gt;
    &amp;lt;Filter type=&amp;quot; filters.chipper&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Option name=&amp;quot;capacity&amp;quot;&amp;gt;400&amp;lt;/Option&amp;gt;&lt;br /&gt;
        &amp;lt;Reader type=&amp;quot;readers.las&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;Option name=&amp;quot;filename&amp;quot;&amp;gt; H:\LIDAR\I_+1_+2_10.las&amp;lt;/Option&amp;gt;&lt;br /&gt;
          &amp;lt;Option name=&amp;quot;spatialreference&amp;quot;&amp;gt;EPSG:4326&amp;lt;/Option&amp;gt;&lt;br /&gt;
        &amp;lt;/Reader&amp;gt;&lt;br /&gt;
    &amp;lt;/Filter&amp;gt;&lt;br /&gt;
  &amp;lt;/Writer&amp;gt;&lt;br /&gt;
&amp;lt;/Pipeline&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
''Примечание: названия драйверов могут отличаться. Для своей версии PDAL узнать доступные драйвера можно с помощью команды pdal --drivers.''&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Теперь мы можем загрузить LAS-файл в базу данных. Для этого необходимо выполнить команду:&lt;br /&gt;
&amp;lt;pre&amp;gt;pdal pipeline H:\LIDAR\las2pg.xml&amp;lt;/pre&amp;gt;&lt;br /&gt;
После завершения процесса загрузки в базе данных «LIDAR» появится новая таблица «Medford» следующей структуры:&lt;br /&gt;
&amp;lt;pre&amp;gt;                      Table &amp;quot;public.medford&amp;quot;&lt;br /&gt;
 Column |    Type    |                      Modifiers&lt;br /&gt;
--------+------------+------------------------------------------------------&lt;br /&gt;
 id     | integer    | default nextval('medford_id_seq'::regclass)&lt;br /&gt;
 pa     | pcpatch    |&lt;br /&gt;
 Indexes:&lt;br /&gt;
    &amp;quot;medford_pkey&amp;quot; PRIMARY KEY(id)&amp;lt;/pre&amp;gt;&lt;br /&gt;
Хоть таблица и состоит из двух полей ID и PA, но в поле PA закодирована информация о точках лидара: X, Y, Z, Intensity, ReturnNumber, NumberOfReturns, Classification, ScanAngleRank, Red, Green, Blue. В одной записи хранится пространственная и атрибутивная информация четырехсот точек. &amp;lt;br /&amp;gt;&lt;br /&gt;
Для визуализации результата импорта можно воспользоваться любой ГИС с возможностью подключения к базе данных. Мы используем QGIS, где создано соединение с базой данных «Lidar».&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Файл:Look-patch-lidar-qgis-4.png‎]]&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Результатом такой технологии импорта данных LIDAR является существенное уменьшение размерности, по сравнению с обычным импортом графических слоев. Характеристики сравнения представлены в таблице.&amp;lt;br /&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Показатель !! Импорт в PostgreSQL/PostGIS через PDAL !! Импорт в PostgreSQL/PostGIS  LAS-файла&lt;br /&gt;
|-&lt;br /&gt;
| Количество записей || 1 864 || 931 919&lt;br /&gt;
|-&lt;br /&gt;
| Размер таблицы, MB || 9,9 || 197&lt;br /&gt;
|}&lt;br /&gt;
Таким образом импортирован один LAS-файл. Если таких файлов множество, есть два пути решения. Первый – объединить все LAS-файлы в один, например, с помощью набора программного обеспечения LAStools (LAStools(с) by Martin Isenburg), в частности программы las2las. Второй – написать собственный скрипт, который генерирует файлы загрузки и выполняет команду PDAL.&lt;br /&gt;
== Пространственный анализ ==&lt;br /&gt;
Формат вывода получившейся таблицы в PostgreSQL труден для восприятия, поэтому для пространственного анализа можно отформатировать таблицу с данными LIDAR.&amp;lt;br /&amp;gt;&lt;br /&gt;
Для обработки и анализа импортированных данных мы можем использовать встроенные функции в расширении PointCloud&amp;lt;ref name=&amp;quot;test&amp;quot; /&amp;gt;.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
-- Сколько точек в облаке (931919)&lt;br /&gt;
SELECT Sum(PC_NumPoints(pa))&lt;br /&gt;
FROM medford;&lt;br /&gt;
&lt;br /&gt;
-- Какова средняя высота первого блока? (151.95)&lt;br /&gt;
WITH pts AS (&lt;br /&gt;
  SELECT PC_Explode(pa) AS pt&lt;br /&gt;
  FROM medford LIMIT 1&lt;br /&gt;
)&lt;br /&gt;
SELECT Avg(PC_Get(pt,'Z')) FROM pts;&lt;br /&gt;
&lt;br /&gt;
-- Какой вид имеет первая точка?&lt;br /&gt;
WITH pts AS (&lt;br /&gt;
  SELECT PC_Explode(pa) AS pt&lt;br /&gt;
  FROM medford LIMIT 1&lt;br /&gt;
)&lt;br /&gt;
SELECT PC_AsText(pt) FROM pts LIMIT 1;&lt;br /&gt;
-- {&lt;br /&gt;
--  &amp;quot;pcid&amp;quot;:1,&lt;br /&gt;
--  &amp;quot;pt&amp;quot;:[255,1,1,0,0,2,0,0,10,556976,2250.04,1253.42,151.95]&lt;br /&gt;
-- }&lt;br /&gt;
&lt;br /&gt;
-- Сколько блоков? (1864)&lt;br /&gt;
SELECT Count(*)&lt;br /&gt;
FROM medford;&lt;br /&gt;
&lt;br /&gt;
-- Какая минимальная и максимальная высота в блоке? (141.78/ 204.33)&lt;br /&gt;
SELECT&lt;br /&gt;
  Min(PC_PatchMin(pa, 'z')) AS min,&lt;br /&gt;
  Max(PC_PatchMax(pa, 'z')) AS max&lt;br /&gt;
FROM medford;&lt;br /&gt;
-- Как выглядит геометрия блока?&lt;br /&gt;
SELECT st_asewkt(pa::geometry) FROM medford LIMIT 1;&lt;br /&gt;
-- SRID=4326;POLYGON((2250.04 1250.2,2250.04 1253.82,2258.88 1253.82,&lt;br /&gt;
-- 2258.88 1250.2,2250.04 1250.2))&lt;br /&gt;
&lt;br /&gt;
-- Как выглядит геометрия точки?&lt;br /&gt;
WITH pts AS (&lt;br /&gt;
  SELECT PC_Explode(pa) AS pt&lt;br /&gt;
  FROM medford LIMIT 1&lt;br /&gt;
)&lt;br /&gt;
SELECT ST_AsEWKT(pt::geometry) FROM pts LIMIT 1;&lt;br /&gt;
-- SRID=4326;POINT(2250.04 1253.42 151.95)&lt;br /&gt;
&lt;br /&gt;
-- Выбрать атрибуты точек: тип классификации, координаты Z,X,Y&lt;br /&gt;
WITH pts AS (&lt;br /&gt;
  SELECT PC_Explode(pa) AS pt&lt;br /&gt;
  FROM medford &lt;br /&gt;
)&lt;br /&gt;
SELECT PC_Get(pt,'Classification'),PC_Get(pt,'Z'), PC_Get(pt,'X'), PC_Get(pt,'Y') FROM pts LIMIT 1;&lt;br /&gt;
-- 2&lt;br /&gt;
-- 151.95&lt;br /&gt;
-- 2250.04&lt;br /&gt;
-- 1253.42&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
''Примечание: более подробную информацию о расширении Point Cloud и функциях SQL смотри в документации&amp;lt;ref name=&amp;quot;ttest&amp;quot;&amp;gt;[https://github.com/pgpointcloud/pointcloud github.com], A PostgreSQL extension for storing point cloud (LIDAR) data.&amp;lt;/ref&amp;gt;.''&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Ссылки по теме:&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Анна Горева</name></author>
	</entry>
	<entry>
		<id>https://wiki.gis-lab.info/index.php?title=%D0%98%D0%BC%D0%BF%D0%BE%D1%80%D1%82_%D0%B8_%D0%B0%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85_%D0%BB%D0%B8%D0%B4%D0%B0%D1%80%D0%BD%D0%BE%D0%B9_%D1%81%D1%8A%D0%B5%D0%BC%D0%BA%D0%B8_%D0%B2_PostgreSQL/PostGIS_%D1%81_%D0%BF%D0%BE%D0%BC%D0%BE%D1%89%D1%8C%D1%8E_PDAL&amp;diff=24574</id>
		<title>Импорт и анализ данных лидарной съемки в PostgreSQL/PostGIS с помощью PDAL</title>
		<link rel="alternate" type="text/html" href="https://wiki.gis-lab.info/index.php?title=%D0%98%D0%BC%D0%BF%D0%BE%D1%80%D1%82_%D0%B8_%D0%B0%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85_%D0%BB%D0%B8%D0%B4%D0%B0%D1%80%D0%BD%D0%BE%D0%B9_%D1%81%D1%8A%D0%B5%D0%BC%D0%BA%D0%B8_%D0%B2_PostgreSQL/PostGIS_%D1%81_%D0%BF%D0%BE%D0%BC%D0%BE%D1%89%D1%8C%D1%8E_PDAL&amp;diff=24574"/>
		<updated>2016-11-07T15:12:15Z</updated>

		<summary type="html">&lt;p&gt;Анна Горева: Новая страница: «{{Статья|Черновик}} {{Аннотация|Рассмотрен процесс импорта и анализа данных лидарной съем…»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Статья|Черновик}}&lt;br /&gt;
{{Аннотация|Рассмотрен процесс импорта и анализа данных лидарной съемки в PostgreSQL с использованием технологии Point Cloud и библиотеки PDAL}}&lt;br /&gt;
&lt;br /&gt;
== Введение ==&lt;br /&gt;
Лидар (LIDAR - Light Identification, Detection and Ranging) – это технология получения и обработки информации дистанционного зондирования с проведением высокоточных измерений X, Y, Z координат. Обработанные и пространственно организованные данные лидарной съемки называют облаком точек – это огромные наборы высотных 3D точек, имеющих дополнительную атрибутику.&amp;lt;br /&amp;gt;&lt;br /&gt;
Данные LIDAR на территории городов или регионов могут содержать в себе миллиарды точек местности. Хранение их в базе данных в классическом виде как тип геометрии «точка» представляется возможным, но очень ресурсозатратным. Во-первых, огромное количество записей в таблице, что увеличивает время обработки данных. Во-вторых, большой объем памяти, занятый хранилищем.&amp;lt;br /&amp;gt;&lt;br /&gt;
Для решения этих проблем существует технология хранения и обработки данных лидарной съемки в PostgreSQL/PostGIS c помощью библиотеки PDAL (Point Data Abstract Library).&amp;lt;br /&amp;gt;&lt;br /&gt;
В статье использованы материалы лидарной съемки на территорию Нижнего Новгорода, представленные файлами в формате LAS (Logging ASCII Standard) на площади размером 1×1 км.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Файл:Lidar-data-nn-1.png]]&amp;lt;br /&amp;gt;&lt;br /&gt;
== Создание хранилища ==&lt;br /&gt;
Прежде чем загрузить данные LIDAR в таблицу PostgreSQL, а затем сделать пространственный анализ с помощью PostGIS, необходимо создать новую базу данных с соответствующими расширениями:&amp;lt;br /&amp;gt;&lt;br /&gt;
# Создать новую базу данных с именем «Lidar».&lt;br /&gt;
# Создать расширения PointCloud, PostGIS и pointcloud_postgis.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE EXTENSION postgis;&lt;br /&gt;
CREATE EXTENSION pointcloud;&lt;br /&gt;
CREATE EXTENSION pointcloud_postgis;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
== Импорт данных ==&lt;br /&gt;
Импорт данных происходит с помощью библиотеки PDAL. PDAL это библиотека для манипулирования данными облака точек. Она очень похожа на библиотеку GDAL, которая обрабатывает растровые и векторные данные. В дополнение к коду библиотеки, PDAL предоставляет набор приложений командной строки, которые пользователи могут удобно использовать для обработки облака точек. Установить PDAL можно через OSGeo4W.&amp;lt;br /&amp;gt;&lt;br /&gt;
Для проверки корректной работы PDAL, после установки, можно прочитать метаданные LAS-файла, выполнив команду:&lt;br /&gt;
&amp;lt;pre&amp;gt;pdal info --input H:\LIDAR\I_+1_+2_10.las --schema&amp;lt;/pre&amp;gt;&lt;br /&gt;
Результат выполнения команды показан на рисунке. Команда –schema показывает размеры и типы полей: X, Y, Z, Intensity, ReturnNumber, NumberOfReturns, ScanDirectionFlag, EdgeOfFlightLine, Classification, ScanAngleRank, UserData, PointSourceId и Time.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Файл:Metadata-las-2_2.png]]&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Теперь необходимо создать файл загрузки для чтения LAS-файла, разбиения облака точек на блоки (например, по 400 точек), а затем записи блоков в базу данных.&amp;lt;br /&amp;gt;&lt;br /&gt;
Файлом загрузки PDAL является XML-файл, который описывает обработку данных. Для загрузки нам понадобятся три драйвера PDAL:&lt;br /&gt;
*writers.pgpointcloud – для чтения LAS-файла&lt;br /&gt;
*filters.chipper&lt;br /&gt;
*readers.las – для записи LAS-файла в базу данных &lt;br /&gt;
Создаем новый текстовый документ с именем «las2pg.xml» и расширением XML следующего вида:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Pipeline version=&amp;quot;1.0&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;Writer type=&amp;quot; writers.pgpointcloud &amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Option name=&amp;quot;connection&amp;quot;&amp;gt;dbname=lidar user=postgres&amp;lt;/Option&amp;gt;&lt;br /&gt;
    &amp;lt;Option name=&amp;quot;table&amp;quot;&amp;gt;medford&amp;lt;/Option&amp;gt;&lt;br /&gt;
    &amp;lt;Option name=&amp;quot;srid&amp;quot;&amp;gt;4326&amp;lt;/Option&amp;gt;&lt;br /&gt;
    &amp;lt;Filter type=&amp;quot; filters.chipper&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Option name=&amp;quot;capacity&amp;quot;&amp;gt;400&amp;lt;/Option&amp;gt;&lt;br /&gt;
        &amp;lt;Reader type=&amp;quot;readers.las&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;Option name=&amp;quot;filename&amp;quot;&amp;gt; H:\LIDAR\I_+1_+2_10.las&amp;lt;/Option&amp;gt;&lt;br /&gt;
          &amp;lt;Option name=&amp;quot;spatialreference&amp;quot;&amp;gt;EPSG:4326&amp;lt;/Option&amp;gt;&lt;br /&gt;
        &amp;lt;/Reader&amp;gt;&lt;br /&gt;
    &amp;lt;/Filter&amp;gt;&lt;br /&gt;
  &amp;lt;/Writer&amp;gt;&lt;br /&gt;
&amp;lt;/Pipeline&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
''Примечание: названия драйверов могут отличаться. Для своей версии PDAL узнать доступные драйвера можно с помощью команды pdal --drivers.''&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Теперь мы можем загрузить LAS-файл в базу данных. Для этого необходимо выполнить команду:&lt;br /&gt;
&amp;lt;pre&amp;gt;pdal pipeline H:\LIDAR\las2pg.xml&amp;lt;/pre&amp;gt;&lt;br /&gt;
После завершения процесса загрузки в базе данных «LIDAR» появится новая таблица «Medford» следующей структуры:&lt;br /&gt;
&amp;lt;pre&amp;gt;                      Table &amp;quot;public.medford&amp;quot;&lt;br /&gt;
 Column |    Type    |                      Modifiers&lt;br /&gt;
--------+------------+------------------------------------------------------&lt;br /&gt;
 id     | integer    | default nextval('medford_id_seq'::regclass)&lt;br /&gt;
 pa     | pcpatch    |&lt;br /&gt;
 Indexes:&lt;br /&gt;
    &amp;quot;medford_pkey&amp;quot; PRIMARY KEY(id)&amp;lt;/pre&amp;gt;&lt;br /&gt;
Хоть таблица и состоит из двух полей ID и PA, но в поле PA закодирована информация о точках лидара: X, Y, Z, Intensity, ReturnNumber, NumberOfReturns, Classification, ScanAngleRank, Red, Green, Blue. В одной записи хранится пространственная и атрибутивная информация четырехсот точек. &amp;lt;br /&amp;gt;&lt;br /&gt;
Для визуализации результата импорта можно воспользоваться любой ГИС с возможностью подключения к базе данных. Мы используем QGIS, где создано соединение с базой данных «Lidar».&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Файл:Look-patch-lidar-qgis-4.png‎]]&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Результатом такой технологии импорта данных LIDAR является существенное уменьшение размерности, по сравнению с обычным импортом графических слоев. Характеристики сравнения представлены в таблице.&amp;lt;br /&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Показатель !! Импорт в PostgreSQL/PostGIS через PDAL !! Импорт в PostgreSQL/PostGIS  LAS-файла&lt;br /&gt;
|-&lt;br /&gt;
| Количество записей || 1 864 || 931 919&lt;br /&gt;
|-&lt;br /&gt;
| Размер таблицы, MB || 9,9 || 197&lt;br /&gt;
|}&lt;br /&gt;
Таким образом импортирован один LAS-файл. Если таких файлов множество, есть два пути решения. Первый – объединить все LAS-файлы в один, например, с помощью набора программного обеспечения LAStools (LAStools(с) by Martin Isenburg), в частности программы las2las. Второй – написать собственный скрипт, который генерирует файлы загрузки и выполняет команду PDAL.&lt;br /&gt;
== Пространственный анализ ==&lt;br /&gt;
Формат вывода получившейся таблицы в PostgreSQL труден для восприятия, поэтому для пространственного анализа можно отформатировать таблицу с данными LIDAR.&amp;lt;br /&amp;gt;&lt;br /&gt;
Для обработки и анализа импортированных данных мы можем использовать встроенные функции в расширении PointCloud.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
-- Сколько точек в облаке (931919)&lt;br /&gt;
SELECT Sum(PC_NumPoints(pa))&lt;br /&gt;
FROM medford;&lt;br /&gt;
&lt;br /&gt;
-- Какова средняя высота первого блока? (151.95)&lt;br /&gt;
WITH pts AS (&lt;br /&gt;
  SELECT PC_Explode(pa) AS pt&lt;br /&gt;
  FROM medford LIMIT 1&lt;br /&gt;
)&lt;br /&gt;
SELECT Avg(PC_Get(pt,'Z')) FROM pts;&lt;br /&gt;
&lt;br /&gt;
-- Какой вид имеет первая точка?&lt;br /&gt;
WITH pts AS (&lt;br /&gt;
  SELECT PC_Explode(pa) AS pt&lt;br /&gt;
  FROM medford LIMIT 1&lt;br /&gt;
)&lt;br /&gt;
SELECT PC_AsText(pt) FROM pts LIMIT 1;&lt;br /&gt;
-- {&lt;br /&gt;
--  &amp;quot;pcid&amp;quot;:1,&lt;br /&gt;
--  &amp;quot;pt&amp;quot;:[255,1,1,0,0,2,0,0,10,556976,2250.04,1253.42,151.95]&lt;br /&gt;
-- }&lt;br /&gt;
&lt;br /&gt;
-- Сколько блоков? (1864)&lt;br /&gt;
SELECT Count(*)&lt;br /&gt;
FROM medford;&lt;br /&gt;
&lt;br /&gt;
-- Какая минимальная и максимальная высота в блоке? (141.78/ 204.33)&lt;br /&gt;
SELECT&lt;br /&gt;
  Min(PC_PatchMin(pa, 'z')) AS min,&lt;br /&gt;
  Max(PC_PatchMax(pa, 'z')) AS max&lt;br /&gt;
FROM medford;&lt;br /&gt;
-- Как выглядит геометрия блока?&lt;br /&gt;
SELECT st_asewkt(pa::geometry) FROM medford LIMIT 1;&lt;br /&gt;
-- SRID=4326;POLYGON((2250.04 1250.2,2250.04 1253.82,2258.88 1253.82,&lt;br /&gt;
-- 2258.88 1250.2,2250.04 1250.2))&lt;br /&gt;
&lt;br /&gt;
-- Как выглядит геометрия точки?&lt;br /&gt;
WITH pts AS (&lt;br /&gt;
  SELECT PC_Explode(pa) AS pt&lt;br /&gt;
  FROM medford LIMIT 1&lt;br /&gt;
)&lt;br /&gt;
SELECT ST_AsEWKT(pt::geometry) FROM pts LIMIT 1;&lt;br /&gt;
-- SRID=4326;POINT(2250.04 1253.42 151.95)&lt;br /&gt;
&lt;br /&gt;
-- Выбрать атрибуты точек: тип классификации, координаты Z,X,Y&lt;br /&gt;
WITH pts AS (&lt;br /&gt;
  SELECT PC_Explode(pa) AS pt&lt;br /&gt;
  FROM medford &lt;br /&gt;
)&lt;br /&gt;
SELECT PC_Get(pt,'Classification'),PC_Get(pt,'Z'), PC_Get(pt,'X'), PC_Get(pt,'Y') FROM pts LIMIT 1;&lt;br /&gt;
-- 2&lt;br /&gt;
-- 151.95&lt;br /&gt;
-- 2250.04&lt;br /&gt;
-- 1253.42&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
''Примечание: более подробную информацию о расширении Point Cloud и функциях SQL смотри в документации.''&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Анна Горева</name></author>
	</entry>
	<entry>
		<id>https://wiki.gis-lab.info/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Metadata-las-2_2.png&amp;diff=24573</id>
		<title>Файл:Metadata-las-2 2.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.gis-lab.info/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Metadata-las-2_2.png&amp;diff=24573"/>
		<updated>2016-11-07T14:55:09Z</updated>

		<summary type="html">&lt;p&gt;Анна Горева: Метаданные LAS-файла&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Метаданные LAS-файла&lt;/div&gt;</summary>
		<author><name>Анна Горева</name></author>
	</entry>
	<entry>
		<id>https://wiki.gis-lab.info/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Metadata-las-2.png&amp;diff=24572</id>
		<title>Файл:Metadata-las-2.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.gis-lab.info/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Metadata-las-2.png&amp;diff=24572"/>
		<updated>2016-11-07T14:52:26Z</updated>

		<summary type="html">&lt;p&gt;Анна Горева: загружена новая версия «Файл:Metadata-las-2.png»: Расширение&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Метаданные LAS-файла&lt;/div&gt;</summary>
		<author><name>Анна Горева</name></author>
	</entry>
	<entry>
		<id>https://wiki.gis-lab.info/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Metadata-las-2.png&amp;diff=24571</id>
		<title>Файл:Metadata-las-2.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.gis-lab.info/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Metadata-las-2.png&amp;diff=24571"/>
		<updated>2016-11-07T14:47:45Z</updated>

		<summary type="html">&lt;p&gt;Анна Горева: загружена новая версия «Файл:Metadata-las-2.png»: Расширение&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Метаданные LAS-файла&lt;/div&gt;</summary>
		<author><name>Анна Горева</name></author>
	</entry>
	<entry>
		<id>https://wiki.gis-lab.info/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Look-patch-lidar-qgis-4.png&amp;diff=24570</id>
		<title>Файл:Look-patch-lidar-qgis-4.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.gis-lab.info/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Look-patch-lidar-qgis-4.png&amp;diff=24570"/>
		<updated>2016-11-07T14:43:38Z</updated>

		<summary type="html">&lt;p&gt;Анна Горева: загружена новая версия «Файл:Look-patch-lidar-qgis-4.png»: расширение&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Визуализация импортированных блоков облака точек в QGIS&lt;/div&gt;</summary>
		<author><name>Анна Горева</name></author>
	</entry>
	<entry>
		<id>https://wiki.gis-lab.info/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Look-patch-lidar-qgis-4.png&amp;diff=24569</id>
		<title>Файл:Look-patch-lidar-qgis-4.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.gis-lab.info/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Look-patch-lidar-qgis-4.png&amp;diff=24569"/>
		<updated>2016-11-07T14:19:05Z</updated>

		<summary type="html">&lt;p&gt;Анна Горева: Визуализация импортированных блоков облака точек в QGIS&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Визуализация импортированных блоков облака точек в QGIS&lt;/div&gt;</summary>
		<author><name>Анна Горева</name></author>
	</entry>
	<entry>
		<id>https://wiki.gis-lab.info/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Schema-import-to-pg-3.png&amp;diff=24568</id>
		<title>Файл:Schema-import-to-pg-3.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.gis-lab.info/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Schema-import-to-pg-3.png&amp;diff=24568"/>
		<updated>2016-11-07T14:08:51Z</updated>

		<summary type="html">&lt;p&gt;Анна Горева: Схема импорта данных LIDAR&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Схема импорта данных LIDAR&lt;/div&gt;</summary>
		<author><name>Анна Горева</name></author>
	</entry>
	<entry>
		<id>https://wiki.gis-lab.info/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Metadata-las-2.png&amp;diff=24567</id>
		<title>Файл:Metadata-las-2.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.gis-lab.info/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Metadata-las-2.png&amp;diff=24567"/>
		<updated>2016-11-07T14:01:37Z</updated>

		<summary type="html">&lt;p&gt;Анна Горева: Метаданные LAS-файла&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Метаданные LAS-файла&lt;/div&gt;</summary>
		<author><name>Анна Горева</name></author>
	</entry>
	<entry>
		<id>https://wiki.gis-lab.info/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Lidar-data-nn-1.png&amp;diff=24566</id>
		<title>Файл:Lidar-data-nn-1.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.gis-lab.info/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Lidar-data-nn-1.png&amp;diff=24566"/>
		<updated>2016-11-07T13:38:46Z</updated>

		<summary type="html">&lt;p&gt;Анна Горева: Материалы лидарной съемки на территорию Нижнего Новгорода&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Материалы лидарной съемки на территорию Нижнего Новгорода&lt;/div&gt;</summary>
		<author><name>Анна Горева</name></author>
	</entry>
</feed>