2009-06-25 9 views
6

¿Cuáles son algunos marcos recomendados para manipular datos espaciales en C++?¿Cuáles son algunos marcos recomendados para manipular datos espaciales en C++?

Estoy buscando un objeto polígono, objeto puntual y algunas operaciones como unión, intersección, distancia y área. Necesito ingresar las coordenadas en WGS84 (lon, lat) y obtener el área en km cuadrados.

Preferiría un marco de código abierto/gratuito, pero estoy abierto a sugerencias.

Editar: Lamentablemente, necesito una solución que no sea GPL. LGPL está bien.

Respuesta

3

GEOS es un motor de geometría/topología C++ de código abierto (LGPL). ¿Te puede quedar bien?

Los lugares útiles para buscar esto son useful article en el sitio web O'Reilly y también OSGeo, que es una colaboración para admitir material geoespacial de código abierto.

0

Dependiendo de la complejidad de estos cálculos, puede considerar escribir uno propio. Si solo estás haciendo área que podría ser tu mejor opción para la velocidad y la falta de hinchazón.

de lo contrario, Geographic Foundation Class (GFC) library es su mejor apuesta.

+0

Gracias por el puntero de GFC. Lamentablemente, necesito una solución que no sea de GPL, así que aclaré mi pregunta. –

0

No es integral y de alto nivel suficiente para lo que pidieron, pero para hacer geodésico transforma puede utilizar excelente biblioteca Geotrans del NGA:

http://earth-info.nga.mil/GandG/geotrans/

que le permitirá convertir entre cosas como WGS84 lat/largo y un sistema de coordenadas cartesianas locales. El código C está bien probado, documentado y es de dominio público.

2
  • El CGAL Proyecto Open Source proporciona un fácil acceso a los algoritmos geométricos eficientes y fiables en forma de una biblioteca de C++ . CGAL se utiliza en varias áreas que necesitan geométrica computación, tales como: la computadora gráficos, visualización científica, el diseño asistido ordenador y modelado, sistemas de información geográfica, biología molecular, imágenes médicas, la robótica y la planificación de movimientos, malla generación , métodos numéricos.

  • La Biblioteca de Geometría Generica (geometrylibrary.geodan.nl, actualmente en "vista previa 4") proporciona una implementación genérica de algoritmos de geometría, trabajando con geometrías definidas por el usuario. Los algoritmos incluyen algunos algoritmos bien conocidos y que a menudo se necesitan como punto-en-polígono, área de polígono, distancia punto a punto, distancia punto a punto, recorte de línea y recorte de polígono, cascos convexos. También contiene algoritmos de transformación, proyecciones de mapas y algoritmos de selección. Además de los algoritmos, la biblioteca proporciona clases de geometría que podrían usarse, pero los algoritmos genéricos no dependen de ellos. (Propuesta para ser incluido en Boost)

1

GEOS para el modelo de la geometría, y GDAL/OGR para una biblioteca de abstracción de datos espacial que soporta Rasters y Vectors.

Al usar estas bibliotecas, también podrá manejar diferentes sistemas de coordenadas (como la transformación de/a WGS84) ya que ambos usan Proj.4 debajo del capó. Para encontrar distancias en metros, puede transformar de WGS84 a algo que use medidores como UTM.

3

También recomiendo Generic Geometry Library que recientemente ha sido reviewed y finalmente aceptado en la colección de Boost C++ Libraries. Como se incluye en Boost, el GGL se llama ahora Boost.Geometry, más precisamente Boost.Geometry también conocido como GGL, Biblioteca de Geometría Genérica.

Otras herramientas útiles

  • ORFEO Toolbox (también conocido como OTB) - una biblioteca de algoritmos de procesamiento de imagen
  • MetaCRS - un proyecto que abarca varias proyecciones, y coordinar las tecnologías relacionadas con el sistema.
  • libgeotiff para la manipulación única GeoTIFF
Cuestiones relacionadas