Растр из формата XYZ CSV - PullRequest
0 голосов
/ 15 июня 2019

У меня большой CSV-файл из 3 столбцов значений xy и z.Я хочу сделать следующее: 1. Как преобразовать этот CSV в файл векторной формы (точки).2. Как конвертировать полученные точки на шаге 2 в гео растр.3. Давайте скажем набор отдельных файлов точек в формате "shp", как извлечь значения из растра, полученного на шаге 2, в новый файл csv, чтобы я мог выполнить такую ​​статистику для него.

Проблема заключается в том,что я новичок в геообработке с использованием python, например, для шага 2 я легко делал это в R, используя пакет «растр», а на шаге 3 также использовал функцию «извлечение» в пакете «растр».Тем не менее, в Python я могу выполнить шаг 2 в геопандах, но шаг 2 и 3, простой ответ недоступен.

1 Ответ

0 голосов
/ 19 июня 2019

Этот точный случай существует в документации GDAL .

Предполагая, что ваши данные, dem.csv, это как:

Easting,Northing,Elevation
86943.4,891957,139.13
87124.3,892075,135.01
86962.4,892321,182.04
87077.6,891995,135.01
...

Вы создаете VRT для его описания:

<OGRVRTDataSource>
    <OGRVRTLayer name="dem">
        <SrcDataSource>dem.csv</SrcDataSource>
        <GeometryType>wkbPoint</GeometryType>
        <GeometryField encoding="PointFromColumns" x="Easting" y="Northing" z="Elevation"/>
    </OGRVRTLayer>
</OGRVRTDataSource>

Или, если в CSV отсутствуют столбцы, вы можете указать GeometryField следующим образом:

<GeometryField encoding="PointFromColumns" x="field_1" y="field_2" z="field_3"/>

Сохраните его как dem.vrt для использования в последующих командах.

Затем для интерполяции с gdal_grid и получения вывода GeoTIFF:

gdal_grid -a invdist:power=2.0:smoothing=1.0 -txe 85000 89000 -tye 894000 890000 -outsize 400 400 -of GTiff -ot Float64 -l dem dem.vrt dem.tiff
...