Pergunta

Eu estou trabalhando em um aplicativo que envolve algumas coisas gis. Haveria alguns arquivos .shp para ser lido e plotados sobre uma tela OpenGL. A tela OpenGL atual está usando a projeção ortográfica como conjunto de glOrtho() e já está exibindo um mapa usando as coordenadas de um arquivo de texto simples ..

Agora o mapa para ser plotados é para ser lido a partir de um shapefile.

Eu tenho as seguintes dúvidas:

  1. Como usar a projeção WGS84 do arquivo shp (como ler a partir do arquivo .prj do formato WKT shapefile) em meu glOrtho existente projection..is há qualquer conversão que precisa ser feito? e como ele é diferente do que o glOrtho () configura? basicamente como usar esta informação?

  2. As minhas necessidades de aplicação para ser configurado de tal forma a que eu possa conhecer a exata latitude / longitude de um ponto sobre o map.for por exemplo. se eu estou pairando sobre cidade X, sua correcta latitude / longitude poderia ser fetched.I sei que isso pode ser feito usando utils / apis como GDAL / OGR opensource, mas estou confuso quanto a documentação dessas APIs não estão recebendo em meu cabeça. Eu tentei encontrar alguns progs amostra C ++, mas não poderia encontrar um.

  3. Eu já escrevi minha própria lógica para ler as coordenadas de um shapefile contendo tanto pontos / polígono / polígono (usando C-shapelib) e plotados sobre meu opengl screen.I encontrados um código de exemplo OGR no doc para ler a pontos shapefile mas nenhum para POLYGON shapefile.And o problema é que esta aplicação tem que ser tão dinâmico que ao carregar o shapefile, deve configurar corretamente a projeção da tela OpenGL dependendo da projeção do arquivo shp ser lido .. por exemplo, WGS84, LCC, EVEREST MODIFICADO ... etc. como conseguir isso de OGR api?

Por favor, dar suas entradas sobre este problema .. Eu estou realmente interessado em fazer este trabalho, mas im não recebendo o início certo ..

Foi útil?

Solução

  1. Shapefile renderização é bastante simples em OpenGL. Você pode exigir "shapelib", uma biblioteca shapefile análise livre em C (Google-lo). Use GL_POINTS para o ponto shapefile, GL_LINES para shapefile linha e GL_LINE_LOOP para shapefile polígono. Defina suas caixa coords delimitadora para o Ortho.

  2. O que você ler a partir do arquivo .prj é informação de projeção. WGS84 lhe dá latitude / coords longos (esféricas). Mas seu sistema de exibição é 2D (retangular). Então, você precisa converter coords 3D esférica para coords 2D retangulares (Este é o significado de Projeção) tipos .Projection são numerosos, dependendo da área de interesse do globo (lembre-se de projeção distorce área / forma / tamanho de características) .Projection tipos variam de Policônica, Modificado Everest, NAD, UTM, etc.,

  3. Se você simplesmente precisa WGS84, em seguida, ler delimitadora coords caixa de seu arquivo .sh e atribuí-los a glOrtho. Se você tiver qualquer projeção (por exemplo: -UTM), então você converter seus caixa coords delimitadoras em coords Projeção e depois atribuir as coordenadas recém-projetados para glOrtho. Para converter latitude / longitude em qualquer projeção, você pode exigir bibliotecas de projeção como "Projlib" ou "GeotransEngine" e etc.

Para mais esclarecimentos pode contactar-me em dgplinux @ y um h oo. c o m

Outras dicas

Por favor, leia a OGR API Tutorial onde você pode aprender como ler os dados vetoriais do fontes como Shapefile. Em seguida, verifique as projeções OGR Tutorial onde você pode aprender sobre como usar informações sobre projeção e espacial sistema de referência ler de fontes de OGR.

GDAL / OGR tem tudo que você precisa carregar um arquivo vetorial, em seguida, converter qualquer coordenadas. Eu entendo sua frustração com GDAL como a documentação não é o maior. Se você quer uma boa introdução ao uso da API, olhada gdalinfo.c e ogrinfo.cpp na árvore GDAL subversão. Fonte pode ser visto em https://svn.osgeo.org/gdal/trunk/gdal.

Se isso não ajudar, eu tenho dois exemplos básicos que eu uso para analisar informações vector e fazer conversão de coordenadas. Eles são realmente ruim, mas eles podem ajudar a obter o ponto.

Vector Carregando

conversão de coordenadas

Finalmente, se você não estiver familiarizado com os formatos de GIS, eu consideraria ler a introdução ArcGIS aqui sob Guide Books / Map Projections. Eu posso competir com os especialistas, apesar de nenhum treinamento cartografia devido a estes guias. Outra fonte boa é Wikipedia.

Em caso de dúvida, basta escolher uma grade UTM você querer ficar com e uso UTM como seu sistema de coordenadas. Ele usa X (Este), Y (Norte), e Z (altitude). A única chave é escolher um único UTM Grade e ter certeza que todas as coordenadas usar isso como uma referência. UTM é fácil de código de teste com como há um grande número de guias online. Você também pode encontrar o código de conversão usando OGR / GDAL ou outros recursos. Outros projetada sistemas de coordenadas são válidas e podem ser melhor, mas eu gostaria de olhar para isso para começar.

Finalmente, se tudo o mais falhar, dê uma olhada nas Geotrans NGA. Isso é uma grande ferramenta de teste.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top