Antecedentes Esta é minha segunda pergunta relacionada ao georreferenciamento de mapas raster nus, a fim de re-visualizá-los em diferentes sistemas de coordenadas e em conjunto com outras camadas de dados. A pergunta anterior está em Converter uma imagem arbitrária do mapa sem meta-dados em projeto QGIS
Problema Meu objetivo é georreferenciar este mapa:
Isso não parece ser Plate-Carrée. Assim, no QGIS, criei vários pontos de controle razoáveis, os quais anexei na íntegra na parte inferior [ref: 1]. Eu forneço ao QGIS Georeferencer o mesmo SRS de destino do meu arquivo de projeto, EPSG: 4326. Eu obtenho resultados excepcionalmente ruins com Helmert e as transformações polinomiais, mas obtenho uma imagem razoável com spline de placa fina (que faz com que o geoestimado resultante passe pelos meus pontos de controle). No entanto, mesmo esse resultado é ruim, por exemplo, em latitudes mais altas (veja a costa russa ao norte do Japão). Esta é uma captura de tela da minha tela QGIS usando um fundo Terra Natural.
Caminho alternativo Tentei um exercício semelhante com a ferramenta muito mais fácil de usar no MapWarper: veja o resultado e os pontos de controle em http://mapwarper.net/maps/758#Preview_Map_tab, onde obtenho resultados mais ruins (provavelmente devido ao fato que eu adicionei menos pontos de controle).
Perguntas em poucas palavras
- Há alguns truques que estou perdendo para obter uma boa georreferenciação?
- Essa projeção é instantaneamente reconhecível?
- No Sistema de coordenadas desconhecido, no desenho antigo ,
gdaltransform
é sugerido que você transforme vários pontos de coordenadas em um SRS de destino, com o objetivo de descobrir os parâmetros de projeção usados para gerar o mapa original. Tentei algo assim: depois de salvar minha lista de pontos do QGIS, fiz um processamento de string para obter uma lista de long / lats separados por espaçocat eurasian-steppe-gcp.points | tail -n+2 | cut -d, -f1-2 | sed 's/,/ /'> tmp.txt
e inserir o arquivo resultante no gdaltransform:gdaltransform -s_srs EPSG:3785 -t_srs EPSG:4326 < tmp.txt
e alternar os_srs
et_srs
sinalizadores (o projeto usa EPSG: 4326). Eu sei que estou filmando no escuro, esperando ter sorte, então não fiquei surpresa quando não consegui entender as saídas. Alguém pode expandir como eu usaria esse método para encontrar a melhor estimativa dos parâmetros de projeção e projeção do mapa de origem? Meu pensamento por trás disso é que, em vez de atrapalhar a colocação de inúmeros pontos de controle para uma boa georreferência, seria mais fácil obter uma georreferência quase perfeita com menos pontos de controle, apenas percorrendo todos os sistemas de coordenadas comuns? Envolve validação cruzada de cada ponto contra todos os outros, para cada CRS em teste?
Gostaria de entender esse algoritmo ou o georreferenciamento para que eu possa automatizar o processo - sempre me deparo com esse problema e até os criadores de conteúdo parar de tratar seus mapas como criações únicas que nunca serão integradas com outro conteúdo, não espero parar.
Referências
[ref: 1] arquivo QGIS GCP:
mapX,mapY,pixelX,pixelY,enable
142.632649100000009,54.453595900000003,505.941176470588232,-95.220588235293974,1
154.934252200000003,59.559921699999997,536.411764705882206,-52.779411764705742,1
80.080158100000006,9.657192300000000,291.558823529411711,-322.661764705882206,1
10.448442600000000,57.819128900000003,21.676470588235190,-103.926470588235134,1
34.007173000000002,27.761438299999998,101.117647058823422,-244.852941176470466,1
50.950890399999999,11.862196600000001,171.852941176470495,-313.955882352941046,1
29.713217199999999,60.024133200000001,90.779411764705799,-92.499999999999829,1
60.000000000000000,0.000000000000000,208.308823529411683,-362.382352941176350,1
69.867506500000005,66.639146199999999,224.088235294117567,-33.191176470588061,1
27.276107100000001,71.049154799999997,89.147058823529306,-21.764705882352814,1
140.000000000000000,0.000000000000000,536.955882352941217,-362.926470588235190,1
20.000000000000000,0.000000000000000,43.441176470588132,-362.926470588235190,1
20.196882700000000,31.243024100000000,47.249999999999901,-231.794117647058698,1
9.171861099999999,42.848309999999998,8.073529411764603,-175.205882352941046,1
131.955786100000012,43.196468600000003,481.999999999999943,-162.691176470588090,1
73.813303700000006,45.169367200000003,256.735294117646959,-161.602941176470438,1
50.602731800000001,44.589102900000000,168.044117647058727,-167.588235294117510,1
121.394975900000006,18.941421099999999,455.882352941176407,-284.029411764705742,1
103.987047000000004,1.417439300000000,389.499999999999943,-357.485294117646959,1
109.325478599999997,55.962283100000001,380.249999999999943,-98.485294117646902,1
31.454010100000001,46.562001500000001,95.132352941176379,-158.882352941176322,1
43.639560299999999,68.844150499999998,137.573529411764611,-40.264705882352814,1
Não atualização
Análise de van der Grinten Eu escrevi uma ferramenta Python para ajustar os GCPs a qualquer projeção suportada pelo Proj4 (via Pyproj) e a apliquei ao par de projeções sugeridas nas respostas. O código fonte (um tanto desleixado, peço desculpas antecipadamente), bem como os GCPs atualizados, estão disponíveis em https://github.com/fasiha/steppe-map
O van der Grinten tem apenas 1 parâmetro para ajustar, e aqui está a imagem resultante (usando a imagem mais recente da Britannica, muito obrigado por fornecer um mapa atualizado e em alta resolução (embora ainda não possua dados de projeção)).
Van der Grinten tem um erro relativo de 0,035 entre os GCPs e os pontos de melhor ajuste, que é o pior do grupo que eu tentei, e a sobreposição da costa mostra isso qualitativamente.
(Pode ser útil se você abrir esta imagem em sua própria guia, ela é bastante alta. Você também verá setas verdes indicando os pontos georreferenciados (eles devem corresponder a marcos significativos na imagem), bem como setas vermelhas indicando onde esses pontos são ajustados (eles devem corresponder aos mesmos pontos de referência na sobreposição da costa) --- o desvio entre os dois pode ajudar o olho a ver as diferenças entre a imagem e o ajuste.)
Análise da área igual de Albers Tentando o mesmo com a projeção de área igual de Albers (que é o mesmo que "Albers conformal Conic"? Desculpe pela minha ignorância). Esse ajuste, envolvendo um ajuste de parâmetro 4-dimensional, é melhor, com um erro relativo de 0,025, mas parece muito ruim.
Análise das projeções de Robinson e Eckert V Ajustei várias projeções pseudo-cilíndricas suportadas pelo Pyproj (tudo o que pude achar que tinha um parâmetro livre) e descobri que as projeções de Robinson e Eckert V fizeram o "melhor" em termos de erro relativo entre os GCPs e os pontos ajustados, ambos com erros relativos de 0,015.
Aqui está o Robinson:
E aqui está o Eckert V.
Observe os desvios da costa ajustada da costa da imagem. Eu acho que com isso eu posso concluir que o mapa não é nenhum dos anteriores?
Winkel tripel: solução possível?
Depois de tentar seqüencialmente todas as projeções neste manual do Proj de 1990 (atualizado em 2003) ftp://ftp.remotesensing.org/proj/OF90-284.pdf , finalmente cheguei à projeção tripel de Winkel. Isso produz os menores erros quantitativos (0,011) e o litoral é uniformemente bastante bom (ou equivalente, uniformemente levemente ruim). Li que esta é a projeção da National Geographic Society, o que significa que é famosa, e isso acrescenta peso à candidatura dessa projeção ao mapa da Britannica. O SRS equipados: +units=m +lon_0=47.0257707403 +proj=wintri
.
(Desculpas por mudar a cor da costa para cinza. Se isso ofender alguém, posso produzir uma versão azul.)
Vou tentar ajustar meus GCPs para tentar diminuir o erro.