Географическая привязка векторных PDF / SVG / DXF линий с использованием QGIS? [Дубликат]

12

Я хочу создать небольшое веб-приложение для визуализации результатов выборов для каждого города на основе опроса. Результат будет очень похож на то, что было сделано для Берлина здесь . Надеюсь, это поможет понять, к чему я иду.

Исходные данные о выборах в нужной мне шкале публикуются, и я знаю, как визуализировать это на основе шейп-файла с отдельными полигонами, расположенными вдоль избирательных округов. Моя проблема - как вы, наверное, догадались - что-то вроде этого еще не существует.

Что на самом деле публикуется, так это файл PDF, в котором излагаются границы районов, в которых я заинтересован: http://muenster.de/stadt/stadtplanung/pdf/a3_stimmbezirk.pdf

Я сам не заинтересован в перерисовке линии, поэтому я ищу способ сделать из этого шейп-файл. К счастью, PDf включает линейную работу в виде отдельных векторных объектов, я извлек их в файл SVG: https://www.dropbox.com/s/bn7698yrdh5tdqj/a3_stimmbezirk_ungrouped.svg

Я уже пытался преобразовать SVG в DXF и импортировать его в qgis 2.0.1. Это на самом деле работает, но (как и ожидалось) помещает векторы в Атлантическом океане, и я не могу найти способ отредактировать и исправить это.

Что я могу сделать сейчас, чтобы привязать эти векторы к инструментам с открытым исходным кодом и, наконец, создать шейп-файл?

bfncs
источник
Не можете ли вы загрузить OpenStreeMap Shapefiles для Munster? download.geofabrik.de/europe/germany/nordrhein-westfalen/… административные границы уже существуют с географической привязкой.
Mapperz
Спасибо за комментарий, Mapperz! Похоже, я мог бы, но это не включает текущие избирательные округа ("Стимбезирке") ... или это?
2013 г.

Ответы:

12

Я наткнулся на ваш вопрос, пытаясь сделать то же самое, вот как я это сделал:

Используемое программное обеспечение:

  • Inkscape
  • QGIS 2.2
  • Плагин Affine Transformation для QGIS

Извлечение векторных данных из PDF

Это то, что вы уже сделали, в основном просто откройте PDF в Inkscape, найдите нужные фигуры и удалите все фоны и окружающий текст. Сохранить как файл .dxf .

Привязка векторного файла

Для работы с векторным файлом нам нужно преобразовать его в шейп-файл ESRI с помощью QGIS.

Откройте QGIS и добавьте файл dxf в качестве растрового слоя, выберите зону 3 DHDN / Гаусса-Крюгера (EPSG: 31467) в качестве системы координат. Щелкните правой кнопкой мыши по слою, сохраните как ESRI Shapefile. Откройте этот шейп-файл как растровый слой и удалите другой.

Теперь у вас есть Münsters Wahlbezirke где-то в координатах 0, 0.

Чтобы перевести (переместить) и изменить размер вектора в нужном месте, нам нужно выяснить координаты и размер цели. Короче говоря, у меня был еще один GeoJSON из Wahlbezirke, который был с географической привязкой, но не настолько подробным, поэтому я использовал его для расчета следующих данных:

  • Цель х, у
  • Соотношение размеров между только что извлеченным вектором и целевым размером (используя xMin, xMax и yMin, yMax (извлеченные из метаданных слоя в QGIS), чтобы получить размеры в направлении x и y для обоих слоев, а затем вычислить соотношение в направлении x и y)

В моем случае это примерно:

target x 3406388
target y 5745290
yratio 118,539696
xratio 118,637678

Включите режим редактирования (значок «Карандаш») на своем слое и вставьте эти числа в плагин «Аффинное преобразование» («Вектор меню», «Инструменты геообработки», «Аффинный»), выберите «Весь слой»:

Аффинная трансформация

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

Вы можете получить представление, похожее на это, где ваш растровый слой очень мал (обведен красным), увеличьте масштаб: QGIS 2.2 Маломасштабный растровый слой (Возможно, я пропустил настройку здесь, я не уверен, что вызывает такое поведение. "Zoom до уровня "не помогает.)

Добавьте слой, который уже имеет географическую привязку, вы можете использовать слой OpenStreetMap (через расширение OpenLayers), NRW WMS или аналогичный. Ваш вектор еще не находится в правильном положении, поэтому переместите его, включив режим редактирования, а затем используйте инструмент «Перемещение объектов».

QGIS 2.2 Функция перемещения

Теперь мы сделали слой полилиний, последний шаг - сделать полигоны из этих линий. Я не собираюсь объяснять это здесь, читайте здесь для получения дополнительной информации:

Смотрите результат здесь .

chrki
источник
Большое спасибо за подробный ответ, я не ожидал, что получу помощь по этой проблеме, и тем временем приостановил проект. Я все еще не закончил с копированием ваших шагов, но это выглядит как раз то, что мне нужно. Я с нетерпением жду, чтобы наконец сделать это благодаря вашей помощи.
bfncs
Редактирование с помощью QGIS может быть утомительным и не совсем интуитивно понятным (как вы можете видеть с помощью поведения / ошибки масштабирования? И других вещей ...), результат доступен на Github онлайн (ссылка в конце поста) ). Я еще не стал конвертировать полученные полилинии в полигоны, сделаю это через некоторое время. Изменить: Только что увидел, что вам нужна другая карта с 172 районами, я только преобразовал карту 33 районов .. извините: D
chrki
6

Вот еще один рабочий процесс, используя ogr2ogr с точками GCP:

  1. Извлеките строки как SVG (как указано выше)
  2. загрузить в inkscape и сохранить как dxf
  3. Загрузить в QGIS, с EPSG: 31467 как CRS
  4. Прочитайте пару координат от значительных краев окружающей городской границы
  5. Откройте редактор OSM JOSM и загрузите отношение 62591 городской границы
  6. Сохранить это как GPX
  7. Загрузите границу в новый сеанс QGIS, установите для проекта CRS значение EPSG: 31467
  8. Прочитайте координаты для тех же точек, что и выше
  9. создайте следующий пакетный файл для GDAL:
ogr2ogr -a_srs EPSG:31467 -gcp 66.2423 264.3829 3397709. 5756806. -gcp 227.530 17.636 3404474. 5746477. -gcp 443.61 153.42 3413517. 5752162. -gcp 456.24 421.97 3414043. 5763404. -gcp 294.56 552.56 3407296. 5768889. stimmbezirke.shp stimmbezirke.dxf

Запустите пакет и загрузите полученный шейп-файл в QGIS:

введите описание изображения здесь

Andrej
источник