Я хочу создать небольшое веб-приложение для визуализации результатов выборов для каждого города на основе опроса. Результат будет очень похож на то, что было сделано для Берлина здесь . Надеюсь, это поможет понять, к чему я иду.
Исходные данные о выборах в нужной мне шкале публикуются, и я знаю, как визуализировать это на основе шейп-файла с отдельными полигонами, расположенными вдоль избирательных округов. Моя проблема - как вы, наверное, догадались - что-то вроде этого еще не существует.
Что на самом деле публикуется, так это файл 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. Это на самом деле работает, но (как и ожидалось) помещает векторы в Атлантическом океане, и я не могу найти способ отредактировать и исправить это.
Что я могу сделать сейчас, чтобы привязать эти векторы к инструментам с открытым исходным кодом и, наконец, создать шейп-файл?
Ответы:
Я наткнулся на ваш вопрос, пытаясь сделать то же самое, вот как я это сделал:
Используемое программное обеспечение:
Извлечение векторных данных из PDF
Это то, что вы уже сделали, в основном просто откройте PDF в Inkscape, найдите нужные фигуры и удалите все фоны и окружающий текст. Сохранить как файл .dxf .
Привязка векторного файла
Для работы с векторным файлом нам нужно преобразовать его в шейп-файл ESRI с помощью QGIS.
Откройте QGIS и добавьте файл dxf в качестве растрового слоя, выберите зону 3 DHDN / Гаусса-Крюгера (EPSG: 31467) в качестве системы координат. Щелкните правой кнопкой мыши по слою, сохраните как ESRI Shapefile. Откройте этот шейп-файл как растровый слой и удалите другой.
Теперь у вас есть Münsters Wahlbezirke где-то в координатах 0, 0.
Чтобы перевести (переместить) и изменить размер вектора в нужном месте, нам нужно выяснить координаты и размер цели. Короче говоря, у меня был еще один GeoJSON из Wahlbezirke, который был с географической привязкой, но не настолько подробным, поэтому я использовал его для расчета следующих данных:
В моем случае это примерно:
Включите режим редактирования (значок «Карандаш») на своем слое и вставьте эти числа в плагин «Аффинное преобразование» («Вектор меню», «Инструменты геообработки», «Аффинный»), выберите «Весь слой»:
Нажмите трансформацию, отключите режим редактирования (и сохраните), и вы получите полностью желтый слой примерно на вашей цели. Я никогда не понимал, как удалить желтый цвет, поэтому я удаляю и снова добавляю слой для лучшей видимости.
Вы можете получить представление, похожее на это, где ваш растровый слой очень мал (обведен красным), увеличьте масштаб: (Возможно, я пропустил настройку здесь, я не уверен, что вызывает такое поведение. "Zoom до уровня "не помогает.)
Добавьте слой, который уже имеет географическую привязку, вы можете использовать слой OpenStreetMap (через расширение OpenLayers), NRW WMS или аналогичный. Ваш вектор еще не находится в правильном положении, поэтому переместите его, включив режим редактирования, а затем используйте инструмент «Перемещение объектов».
Теперь мы сделали слой полилиний, последний шаг - сделать полигоны из этих линий. Я не собираюсь объяснять это здесь, читайте здесь для получения дополнительной информации:
Смотрите результат здесь .
источник
Вот еще один рабочий процесс, используя ogr2ogr с точками GCP:
Запустите пакет и загрузите полученный шейп-файл в QGIS:
источник