2009-06-25 9 views
6

Quali sono alcuni framework consigliati per la manipolazione dei dati spaziali in C++?Quali sono alcuni framework consigliati per la manipolazione dei dati spaziali in C++?

Sto cercando un oggetto poligonale, un oggetto punto e alcune operazioni come unione, intersezione, distanza e area. Devo inserire le coordinate in WGS84 (lon, lat) e ottenere un'area in km quadrati.

Preferirei un framework libero/open source, ma sono aperto ai suggerimenti.

Modifica: Purtroppo ho bisogno di una soluzione non GPL. LGPL va bene.

risposta

3

GEOS è un motore di geometria/topologia C++ open source (LGPL). Ti si addice?

I posti utili per cercare questa roba sono questo useful article sul sito Web O'Reilly e anche OSGeo che è una collaborazione per supportare le risorse geospaziali open source.

0

A seconda di come saranno complessi questi calcoli, potresti voler prendere in considerazione la scrittura. Se stai solo facendo un'area che potrebbe essere la tua migliore opzione per la velocità e la mancanza di gonfiore.

altrimenti il ​​Geographic Foundation Class (GFC) library è la soluzione migliore.

+0

Grazie per il puntatore GFC. Purtroppo ho bisogno di una soluzione non GPL, quindi ho chiarito la mia domanda. –

0

Non è completa e di alto livello sufficiente per quello che hai chiesto, ma per fare geodetico trasforma è possibile utilizzare eccellente biblioteca Geotrans del NGA:

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

che vi permetterà di convertire tra le cose come WGS84 lat/long e un sistema di coordinate cartesiane locale. Il codice C è ben testato, documentato ed è di pubblico dominio.

2
  • Il CGAL progetto open source offre un facile accesso agli algoritmi geometrici affidabili ed efficienti nel forma di una libreria C++. CGAL è utilizzato in diverse aree che necessitano di geometrica di calcolo, come ad esempio: per computer grafica, visualizzazione scientifica, Computer Aided Design e modellazione, Sistemi Informativi Territoriali, biologia molecolare, imaging medicale, robotica e pianificazione del movimento, maglia generazione , metodi numerici.

  • La libreria di geometria generica (geometrylibrary.geodan.nl, attualmente in "anteprima 4") fornisce un'implementazione generica degli algoritmi di geometria, lavorando con le geometrie definite dall'utente. Gli algoritmi includono alcuni algoritmi noti e spesso necessari come point-in-polgon, area poligonale, distanza punto-punto, distanza da punto a linea, ritaglio di linea e ritaglio poligonale, scafi convessi. Contiene anche algoritmi di trasformazione, proiezioni di mappe e algoritmi di selezione. Oltre agli algoritmi, la libreria fornisce classi geometriche che potrebbero essere utilizzate, ma gli algoritmi generici non dipendono da essi. (Proposto da inserire nel Boost)

1

GEOS per il modello Geometria, e GDAL/OGR per una libreria di dati di astrazione spaziale che supporta Rasters e Vectors.

Utilizzando queste librerie, sarete anche in grado di gestire diversi sistemi di coordinate (come la trasformazione da/a WGS84) poiché entrambi usano Proj.4 sotto il cofano. Per trovare le distanze in metri è possibile trasformare da WGS84 a qualcosa che utilizza metri come UTM.

3

Raccomando anche Generic Geometry Library che recentemente è stato reviewed e alla fine accettato alla raccolta di Boost C++ Libraries. Come incluso in Boost, GGL è ora chiamato Boost.Geometry, più precisamente Boost.Geometry aka GGL, Generic Geometry Library.

Altri strumenti utili

  • ORFEO Toolbox (aka OTB) - una libreria di algoritmi di elaborazione delle immagini
  • MetaCRS - un progetto che comprende diverse proiezioni, e coordinare le tecnologie relativi al sistema.
  • libgeotiff per la manipolazione suola GeoTIFF
Problemi correlati