Геореференційна векторна лінія 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. Це насправді працює, але (як і очікувалося) розміщує вектори в атлантичному океані, і я не можу знайти спосіб його відредагувати і виправити.

Що я можу зробити зараз, щоб згенерувати ці вектори за допомогою інструментів з відкритим кодом та нарешті створити файл форми?


Ви не можете завантажити OpenStreeMap Shapefiles для Munster? download.geofabrik.de/europe/germany/nordrhein-westfalen/… адміністративні межі вже є геореференційними.
Mapperz

Дякуємо за коментар, Mapperz! Схоже, я міг би, але він не включає нинішні виборчі округи ("Stimmbezirke") ... чи це?
bfncs

Відповіді:


12

Я натрапив на ваше запитання, намагаючись зробити те саме, ось як я це зробив:

Використовуване програмне забезпечення:

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

Витяг векторних даних з PDF

Це те, що ви вже зробили, в основному просто відкрийте PDF у Inkscape, знайдіть потрібні форми та видаліть усі фони та навколишній текст. Збережіть як .dxf файл.

Геореференція векторного файлу

Для роботи з векторним файлом нам потрібно перетворити його в ESRI Shapefile з QGIS.

Відкрийте QGIS і додайте файл dxf як шар растру, виберіть DHDN / Gauss-Kruger zone 3 (EPSG: 31467) як систему координат. Клацніть по шару правою кнопкою миші, збережіть як ESRI Shapefile. Відкрийте це файл форми у вигляді растрового шару та видаліть інший.

Тепер у вас є Münsters Wahlbezirke десь за координатами 0, 0.

Щоб перевести (перемістити) та змінити розмір вектора в потрібне місце, нам потрібно з’ясувати цільові координати та розмір. Щоб коротко сказати, у мене був ще один GeoJSON Wahlbezirke, який був геореференційним, але не настільки детальним, тому я використовував це для обчислення наступних даних:

  • Цільовий х, у
  • Коефіцієнт розміру між нашим щойно витягнутим вектором та розміром цілі (за допомогою xMin, xMax та yMin, yMax (витягнутих з метаданих шару в QGIS), щоб отримати розміри в напрямку x x y для обох шарів, а потім обчислити співвідношення у напрямку x та y)

У моєму випадку вони виявляються приблизно:

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

Увімкніть режим редагування (піктограма олівця) на вашому шарі та вставте ці цифри у плагін Affine Transformation (Вектор меню, Інструменти геообробки, Affine), виберіть "Цілий шар":

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

Клацніть перетворення, вимкніть режим редагування (і збережіть), і ви отримаєте весь жовтий шар приблизно у вашої цілі. Я ніколи не придумав, як видалити жовтий колір, тому видаляю і знову додаю шар для кращої видимості.

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

Додайте шар, який уже є геореференційним, ви можете використовувати шар OpenStreetMap (через розширення OpenLayers), NRW WMS або подібний. Ваш вектор ще не в потрібному положенні, тому перемістіть його, включивши режим редагування, а потім скористайтеся інструментом "Перемістити функції".

QGIS 2.2 Перемістити функцію

Зараз ми зробили шар поліліній, останній крок - зробити багатокутники з цих ліній. Я не збираюся пояснювати це, читайте тут для отримання додаткової інформації:

Результат дивіться тут .


Велике спасибі за детальну відповідь, я більше не сподівався отримати допомогу з цієї проблеми, а тим часом проект зупинився. Я все ще не закінчую з повторенням ваших кроків, але це виглядає як те, що мені потрібно. Я з нетерпінням чекаю нарешті зробити це завдяки вашій допомозі.
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:

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.