Преобразование открытой базы данных карт улиц в таблицу атрибутов растра - PullRequest
0 голосов
/ 06 ноября 2019

Я новичок в OSM и в целом анализирую карты. Моя задача - преобразовать определенную область из OSM (которая дана в формате XML и может быть преобразована в различные типы баз данных) в тензор, где два измерения дают область (с определенным разрешением), а третье измерение - это«слои» - в конечном итоге получение многослойных матриц битов для каждого возможного атрибута.

Например, если площадь равна 2 * 2 (она может быть более или менее в зависимости от выбранного разрешения) и возможный атрибут - здания,деревья и дороги, тогда тензор будет иметь 2 * 2 * 3: 3 слоя 2 * 2 матриц для атрибутов. Ячейка (i, j, k) в тензоре равна 1 тогда и только тогда, когда атрибут k существует в местоположении i, j на карте.

Я пытался искать в Интернете и использовать gdal, qgis, и я довольнопотерян.

Возможна ли такая процедура?

1 Ответ

0 голосов
/ 06 ноября 2019

У меня нет опыта работы с растрами, поэтому я могу ответить только на первую часть вашего запроса.

Получить карту OSM со следующим кодом:

library (OpenStreetMap)

LAT1=52;LAT2=54;LON1=4;LON2=6
#get an openstreetmap
map.osm <- OpenStreetMap::openmap( c( LAT1 - 1, LON1 - 1 ), 
                                   c( LAT2 + 1, LON2 + 1 ), 
                                   zoom = NULL,
                                   type = "https://basemaps.cartocdn.com/light_nolabels/{z}/{x}/{y}.png",
                                   mergeTiles = TRUE)

#plot with latest version of ggplot2  
ggplot2::autoplot( map.osm )

enter image description here

Вы можете (вероятно) построить растр, используя raster::raster( map.osm ), поскольку raster содержит метод для OpenStreetmapObjects

...