Уважаемое сообщество переполнения стека,
Я работаю с облаком цифровых точек возвышения (средняя глубина 4-10 точек / м², точность позиционирования +/- 30 см, точность высоты +/- 15 см, площадь : 1000x1000 м). Я интерполировал растровый файл с разрешением 1м х 1м. Далее обозначается как DEM.
Кроме того, у меня есть 4-канальное, высокоточное, ортографическое c изображение (средняя точность позиционирования +/- 20-30 см, горизонтальное разрешение 20 см х 20 см) для та же область. Далее обозначается как DOP
. Я хранился как в PostgreSQL -DB с расширением PostGIS и размером листов 40x40.
Цель для создания полигонов и запроса растровых данных обоих слоев, упомянутых выше. покрыты этими полигонами. Я создал многоугольник с продолжением e. \, G. 32 х 32м. Этот многоугольник смещается по интересующей области, так что вся область покрыта множеством многоугольников. После этого я создал запрос для покрытых растровых данных:
WITH
ref AS(
SELECT
ST_Transform(rast,25832) AS align_to
FROM geodata.dsm LIMIT 1
),
aligned AS(
SELECT
ST_Union(
ST_Transform(
ST_Clip(
dsm.rast,
p.geom
),
align_to
)
) as rast1,
ST_Union(
ST_AsRaster(
p.geom,
align_to
)
) rast2
FROM
geodata.dsm AS dsm,
public.classification_result_overlap_35cm_ss8 AS p
CROSS JOIN ref
WHERE
p.gid=1 AND ST_Intersects(dsm.rast, p.geom)
)
SELECT
ST_MapAlgebra(rast1, rast2,'[rast1]') as raster FROM aligned;
После визуальной проверки результатов стало очевидно, что сопоставление между запрашиваемой ЦМР и DOP не является точным на 100%. Это стало более очевидным, когда я уменьшил размер многоугольника, скажем, 8 х 8 м. Я запросил с помощью ST_GeoReference верхние левые координаты запрашиваемых данных DEM и DOP и определил с помощью pyproj.Geod (...). Inv расстояние между верхними левыми координатами. Я выяснил, что сдвиг между верхними левыми координатами данных DEM и DOP находится в диапазоне от 0 до 1,2. Может быть, я что-то не так сделал в своем запросе? Я подумал, что, возможно, максимальная разница между DEM и DOP может быть обусловлена различным горизонтальным разрешением наборов данных. В этом случае максимальная разница между данными может составлять \ sqrt {2} м.
Кстати, у кого-нибудь есть подсказка для дальнейшего ускорения этого запроса?
Система настройка:
- БД: PostgreSQL версия 12.1
- ОС: Ubuntu 18.04
- Расширение: POSTGIS = "3.0.0 r17983" [EXTENSION] PGSQL = " 120 "GEOS =" 3.8.0-CAPI-1.13.1 "PROJ =" 6.3.0 "GDAL =" GDAL 3.1.0dev-437c92a187, выпущено в 2020/01/05 "LIBXML =" 2.9.9 "LIBJSON =" 0,12 .1 "РАСТР
Заранее спасибо.
С наилучшими пожеланиями