Chcę stworzyć małą aplikację internetową, która wizualizuje wyniki wyborów dla każdego miasta na stronie ankiety. Rezultat będzie bardzo podobny do tego, co zrobiono dla Berlina tutaj . Mam nadzieję, że pomoże to zrozumieć, o co mi chodzi.
Nieprzetworzone dane wyborcze w skali, której potrzebuję, są publikowane i wiem, jak to zrobić na podstawie pliku kształtu z osobnymi wielokątami wyłożonymi okręgami wyborczymi. Moim problemem jest - jak zapewne można się domyślić - że coś takiego jeszcze nie istnieje.
Tym, co faktycznie zostało opublikowane, jest plik PDF przedstawiający granice dzielnic, którymi jestem zainteresowany: http://muenster.de/stadt/stadtplanung/pdf/a3_stimmbezirk.pdf
Sam nie chcę przerysowywać szkicu, więc szukam sposobu na zrobienie z niego pliku kształtu. Na szczęście PDf zawiera linie jako osobne obiekty wektorowe, wyodrębniłem je do pliku SVG: https://www.dropbox.com/s/bn7698yrdh5tdqj/a3_stimmbezirk_ungrouped.svg
Próbowałem już przekonwertować SVG na DXF i zaimportować go do qgis 2.0.1. To faktycznie działa, ale (zgodnie z oczekiwaniami) umieszcza wektory na Oceanie Atlantyckim i nie mogę znaleźć sposobu na ich edycję i naprawienie.
Co mogę teraz zrobić, aby dokonać georeferencji tych wektorów za pomocą narzędzi open source i wreszcie utworzyć plik kształtu?
Odpowiedzi:
Natknąłem się na twoje pytanie, próbując zrobić to samo, oto jak to zrobiłem:
Zastosowane oprogramowanie:
Wydobywanie danych wektorowych z pliku PDF
To, co już zrobiłeś, po prostu otwórz plik PDF w Inkscape, znajdź pożądane kształty i usuń wszystkie tła i otaczający tekst. Zapisz jako plik .dxf .
Georeferencje pliku wektorowego
Aby pracować z plikiem wektorowym, musimy przekonwertować go na plik kształtu ESRI za pomocą QGIS.
Otwórz QGIS i dodaj plik dxf jako warstwę rastrową, wybierz strefę 3 DHDN / Gaussa-Krugera (EPSG: 31467) jako układ współrzędnych. Kliknij warstwę prawym przyciskiem myszy i zapisz jako plik kształtu ESRI. Otwórz ten plik kształtu jako warstwę rastrową i usuń drugi.
Masz teraz Münsters Wahlbezirke gdzieś przy współrzędnych 0, 0.
Aby przetłumaczyć (przenieść) i zmienić rozmiar wektora we właściwe miejsce, musimy znaleźć docelowe współrzędne i rozmiar. Krótko mówiąc, miałem inny GeoJSON z Wahlbezirke, który był georeferencyjny, ale nie tak szczegółowy, więc użyłem go do obliczenia następujących danych:
W moim przypadku okazują się one z grubsza:
Włącz tryb edycji (ikona ołówka) na swojej warstwie i wstaw te liczby do wtyczki Affine Transformation (Menu wektor, Narzędzia geoprzetwarzania, Affine), wybierz „Cała warstwa”:
Kliknij transformuj, wyłącz tryb edycji (i zapisz), a skończysz z żółtą warstwą z grubsza w miejscu docelowym. Nigdy nie wymyśliłem, jak usunąć żółty kolor, więc usuwam i ponownie dodam warstwę, aby uzyskać lepszą widoczność.
Możesz skończyć z widokiem, który wygląda mniej więcej tak, gdzie twoja warstwa rastrowa jest bardzo mała (zakreślona na czerwono), powiększ tutaj: (Być może przeoczyłem ustawienie tutaj, nie jestem pewien, co powoduje takie zachowanie. ”Zoom w zakresie warstw ”nie pomaga.)
Dodaj warstwę, która jest już georeferencyjna, możesz użyć warstwy OpenStreetMap (poprzez rozszerzenie OpenLayers), NRW WMS lub podobnej. Twój wektor nie znajduje się jeszcze we właściwej pozycji, więc przenieś go, włączając tryb edycji, a następnie użyj narzędzia Przenieś funkcje.
Teraz stworzyliśmy warstwę polilinii, ostatnim krokiem jest wykonanie wielokątów z tych linii. Nie zamierzam tego tutaj wyjaśniać, przeczytaj tutaj, aby uzyskać więcej informacji:
Zobacz wynik tutaj .
źródło
Oto kolejny przepływ pracy, wykorzystujący ogr2ogr z punktami GCP:
Uruchom partię i załaduj wynikowy plik kształtu do QGIS:
źródło