Фон
Загрузил данные Alberta OSM из Geofabrik и запустил их на частном сервере Linux с использованием PostgreSQL 9.1, PostGIS 2.0, Mapnik 2.1.0, osm2pgsql, Apache 2, mod_tile, renderd и OpenLayers:
Данные были импортированы osm2pgsql
следующим образом:
osm2pgsql -W -K -S /usr/local/share/osm2pgsql/default.style -d osm alberta.osm.bz2
проблема
Данные OSM для Альберты неполны. Мне дали набор шейп-файлов, которые улучшают данные OSM:
City.dbf, City.prj, City.sbn, City.sbx, City.shp, City.shp.xml, City.shx
Плюс дополнительные шейп-файлы для деревень, городских районов, границ муниципального района и так далее. Я успешно импортировал шейп-файлы в PostgreSQL с помощью плагина pgAdmin . City.prj
Файл описывает его проекцию следующим образом :
GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]]
Данные шейп-файлов и данные OpenStreetMap (OSM) имеют свою собственную базу данных, но я считаю, что хочу импортировать данные шейп-файлов в базу данных OSM. (Это частный сервер и локальная копия данных OSM; данные шейп-файла не могут быть легально переданы.)
Обновление № 1
Чтобы было ясно, шейп-файлы не содержат дорог: только границы муниципалитетов (которые определенно не являются частью данных OSM), города (некоторые из которых являются частью данных OSM) и границы городов для крупных городов (некоторые из которых могут конфликт с данными OSM).
Вопрос
Как объединить данные шейп-файла с данными OSM, чтобы новые города появлялись на карте?
Примечание. Моя основная задача - устранить дубликаты данных (например, Edmonton указан как в OSM, так и в заготовленных шейп-файлах).
Ссылки по теме
- http://wiki.openstreetmap.org/wiki/Shapefiles
- http://wiki.openstreetmap.org/wiki/Import/Shapefile
- http://wiki.openstreetmap.org/wiki/Convert_shp_to_osm_using_grass_and_gpsbabel
- https://github.com/wavded/js-shapefile-to-geojson
- http://redmine.yellowbkpk.com/projects/list_files/geo
- http://www.gdal.org/ogr2ogr.html
- http://wiki.openstreetmap.org/wiki/Ogr2osm
- https://github.com/andrewguertin/ogr2osm
- http://svn.openstreetmap.org/applications/utils/import/shp2osm/
- http://crschmidt.net/blog/archives/354/polyshp2osm/
- http://www.mail-archive.com/talk@openstreetmap.org/msg12487.html
Спасибо!
источник
Ответы:
Вступление
Это, вероятно, потребует значительного количества ручной работы для обнаружения и удаления дублированных данных. Когда вы обнаруживаете и разрешаете дублирующиеся данные; вам нужно, чтобы оба источника были в одном и том же географическом формате: шейп-файл, базы данных PostGIS или данные OSM.
Workflow
Следующий рабочий процесс основан на использовании обоих источников данных в качестве OSM перед объединением и разрешением дублирующих данных.
Есть несколько вариантов конвертации данных в OSM:
A]
ogr2osm
как вы заметили: есть несколько разных версий ogr2osm, независимо от того, какую вы используете - я предпочитаю pnorman , она самая современная. Неважно, что, убедитесь, что файлы перевода совместимы с версией ogr2osm, которую вы используете (для простоты, те, с которыми я ссылался, должны быть совместимы с версией ogr2osm). Смотрите здесь как примеры для файлов перевода, которые совместимы с ogr2osm pnorman.Убедитесь, что файл перевода содержит всю информацию, которую вы хотите получить в своем шейп-файле. Файл перевода преобразует ваши типы и атрибуты шейп-файла в то, что OSM называет тегами , которые состоят из ключей и значений.
1a. запустить ogr2osm.
Откройте JOSM , скачайте плагин Conflation
Ваши данные gov теперь являются файлом osm. Откройте josm, File> open. Ваши данные будут в виде слоя.
Если у вас уже есть данные OSM, хранящиеся локально на вашем компьютере, откройте их в josm, они также откроются как новый слой.
Объединение этих двух источников данных вместе и устранение дублирующих данных называется объединением . Запустите плагин conflation и разрешите все конфликты.
Если в JOSM не хватает памяти (например, при использовании больших файлов), разделите типы атрибутов и выполните этот рабочий процесс несколько раз, каждый из которых имеет различный тип данных (например, границы и виды использования земли; шоссе; здания), а затем, наконец, объедините файлы OSM вместе, используя осмий или другой инструмент.
B. JOSM также может читать шейп-файлы, хотя поддержка SHP не идеальна, и этот метод предполагает, что шейп-файл может быть загружен полностью в память ...
filename.shp
).Импортировать как OSM
Импортируйте данные OpenStreetMap в систему следующим образом:
Параметр
-j
является ключевым, так как он инструктирует osm2pgsql импортировать теги вhstore
столбец, сохраняя базовую структуру данных и импортируя все теги в базу данных.Создать слой Mapnik
Чтобы данные отображались на карте, добавьте слой и стиль для этого слоя. Это может быть так просто:
mapnik-stylesheets/osm.xml
.</Map>
тегом ......
Создать стиль Mapnik
Продолжая из предыдущего раздела:
</Style>
тег (около строки 3350).&layer-shapefiles;
директивой:...
Roadmatcher
Roadmatcher это еще один инструмент, который может быть полезным
источник
find_extent
а неst_find_extent
). В базе данных установлен PostGIS 2.0.