Vetor de georreferenciamento de linhas de PDF / SVG / DXF usando QGIS? [duplicado]

12

Quero criar um pequeno aplicativo da web para visualizar os resultados das eleições, por site de pesquisa, para minha cidade. O resultado será muito semelhante ao que foi feito para Berlim aqui . Espero que isso ajude a entender o que estou procurando.

Os dados brutos das eleições na escala de que preciso são publicados e sei como visualizá-los com base em um arquivo de forma, com polígonos separados que delimitam os distritos eleitorais. Meu problema é - como você provavelmente poderia imaginar - que algo assim ainda não existe.

O que realmente é publicado, porém, é um arquivo PDF que delimita as fronteiras dos distritos nos quais estou interessado: http://muenster.de/stadt/stadtplanung/pdf/a3_stimmbezirk.pdf

Eu não estou interessado em redesenhar a linha sozinho, então estou procurando uma maneira de criar um arquivo de forma com isso. Felizmente, o PDf inclui o trabalho de linha como objetos vetoriais separados, extraí-os em um arquivo SVG: https://www.dropbox.com/s/bn7698yrdh5tdqj/a3_stimmbezirk_ungrouped.svg

Eu já tentei converter o SVG para um DXF e importá-lo para o qgis 2.0.1. Isso realmente funciona, mas (como esperado) coloca os vetores no oceano atlântico e não consigo encontrar uma maneira de editá-lo e corrigi-lo.

O que posso fazer agora para georreferenciar esses vetores com ferramentas de código aberto e finalmente produzir um shapefile?

bfncs
fonte
Você não pode baixar o OpenStreeMap Shapefiles for Munster? download.geofabrik.de/europe/germany/nordrhein-westfalen/… limites administrativos já existem georreferenciados.
Mapperz
Obrigado por comentar, Mapperz! Parece que eu poderia, mas não inclui os distritos eleitorais atuais ("Stimmbezirke") ... ou inclui?
precisa saber é

Respostas:

12

Eu me deparei com sua pergunta enquanto tentava fazer a mesma coisa, eis como eu fiz isso:

Software usado:

  • Inkscape
  • QGIS 2.2
  • Plugin de transformação afim para QGIS

Extraindo dados vetoriais de PDF

É o que você já fez, basicamente basta abrir o PDF no Inkscape, encontrar as formas desejadas e remover todos os planos de fundo e o texto ao redor. Salve como arquivo .dxf .

Georreferenciar o arquivo vetorial

Para trabalhar com o arquivo vetorial, precisamos convertê-lo em um ESRI Shapefile com QGIS.

Abra o QGIS e adicione o arquivo dxf como uma camada raster, selecione DHDN / Gauss-Kruger zone 3 (EPSG: 31467) como o sistema de coordenadas. Clique com o botão direito do mouse na camada, salve como ESRI Shapefile. Abra este shapefile como uma camada raster e remova a outra.

Agora você tem Münsters Wahlbezirke em algum lugar nas coordenadas 0, 0.

Para traduzir (mover) e redimensionar o vetor no lugar certo, precisamos descobrir as coordenadas e o tamanho do alvo. Para resumir, eu tinha outro GeoJSON de Wahlbezirke que era georreferenciado, mas não tão detalhado, então usei isso para calcular os seguintes dados:

  • Meta x, y
  • Proporção de tamanho entre o vetor recém-extraído e o tamanho de destino (usando xMin, xMax e yMin, yMax (extraído dos metadados da camada no QGIS) para obter as dimensões na direção x e y para ambas as camadas e, em seguida, calcule a proporção na direção x e y)

No meu caso, estes acabam sendo aproximadamente:

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

Ative o modo de edição (ícone Lápis) na sua camada e coloque esses números no plug-in Affine Transformation (vetor de menu, Ferramentas de geoprocessamento, Affine), selecione "Camada inteira":

Transformação Afim

Clique em transformar, desative o modo de edição (e salve) e você terá uma camada toda amarela aproximadamente no seu destino. Eu nunca descobri como remover a cor amarela, então removo e re-adiciono a camada para melhorar a visibilidade.

Você pode acabar com uma exibição parecida com esta, onde sua camada raster é super pequena (circulada em vermelho), faça o zoom aqui: QGIS 2.2 Camada de varredura em pequena escala (Talvez eu tenha esquecido uma configuração aqui, não sei ao certo o que causa esse comportamento. " até a extensão da camada "não ajuda.)

Adicione uma camada que já é georreferenciada, você pode usar uma camada do OpenStreetMap (via extensão OpenLayers), um NRW WMS ou similar. Seu vetor ainda não está na posição correta, mova-o ativando o modo de edição e use a ferramenta Mover recurso (s).

Recurso Mover QGIS 2.2

Agora que criamos uma camada de polilinhas, o último passo é criar polígonos a partir dessas linhas. Não vou explicar isso aqui, leia aqui para mais informações:

Veja o resultado aqui .

chrki
fonte
Muito obrigado pela resposta detalhada, eu não esperava mais obter ajuda para esse problema e, enquanto isso, suspendia o projeto. Ainda não terminei de replicar suas etapas, mas isso parece exatamente o que eu preciso. Estou ansioso para finalmente fazê-lo, graças à sua ajuda.
bfncs
A edição com o QGIS pode ser entediante e não é muito intuitiva (como você pode ver com o comportamento / bug do zoom? E outras coisas ...), o resultado está online no Github para você usar gratuitamente (link no final do post) ) Ainda não andei por aí para converter as polilinhas resultantes em polígonos. Farei isso algum tempo depois. Edit: acabei de ver que você precisa do outro mapa com 172 distritos, eu só ter convertido os 33 distritos mapear .. desculpe: D
chrki
6

Aqui está outro fluxo de trabalho, usando ogr2ogr com pontos GCP:

  1. Extraia as linhas como svg (como acima)
  2. carregar no inkscape e salvar como dxf
  3. Carregar no QGIS, com EPSG: 31467 como CRS
  4. Leia algumas coordenadas de bordas significativas da fronteira da cidade
  5. Abra o editor OSM JOSM e faça o download da relação 62591 da fronteira da cidade
  6. Salve isso como GPX
  7. Carregue a borda em uma nova sessão do QGIS, defina o CRS do projeto como EPSG: 31467
  8. Leia as coordenadas para os mesmos pontos acima
  9. crie o seguinte arquivo em lotes para 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

Execute o lote e carregue o shapefile resultante no QGIS:

insira a descrição da imagem aqui

AndreJ
fonte