數據庫
PostGIS
PostGIS作為PostgreSQL對象關系數據庫系統的擴展模塊,與Oracle中Spatial相似,使用SFS規范,遵循OGC 的Simple Feature for SQL。
支持所有的空間數據類型,這些類型包括:點(POINT)、線(LINESTRING)、 多邊形(POLYGON)、多點(MULTIPOINT)、 多線(MULTILINESTRING)、 多多邊形(MULTIPOLYGON)和集合對象集(GEOMETRYCOLLECTION)等。PostGIS支持所有的對象表達方法,比如WKT和WKB。PostGIS支持所有的數據存取和構造方法,如GeomFromText()、AsBinary(),以及GeometryN()等。PostGIS提供簡單的空間分析函數(如Area和Length)同時也提供其他一些具有復雜分析功能的函數,比如Distance。PostGIS提供了對於元數據的支持,如GEOMETRYCOLUMNS和SPATIAL REF SYS,同時,PostGIS也提供了相應的支持函數,如AddGeometryColumn和DropGeometryColumn。PostGIS提供了一系列的二元謂詞(如Contains、Within、Overlaps和Touches)用於檢測空間對象之間的空間關系,同時返回布爾值來表征對象之間符合這個關系。PostGIS提供了空間操作符(如Union和Difference)用於空間數據操作。比如,Union操作符融合多邊形之間的邊界。兩個交迭的多邊形通過Union運算就會形成一個新的多邊形,這個新的多邊形的邊界為兩個多邊形中最大邊界。
PostGIS也具有大型數據庫的特性,如數據備份,數據庫恢復,災難恢復等。
MySql空間擴展
MySQL從4.1開始引入了空間功能,實現和使用方式基本和POSTGIS類似。但函數支持沒有postGIS多,對於高精度函數需要在5.6版本才開始支持。
MongoDB
MongoDB(https://www.mongodb.com/)是一個開源面向文檔的NoSQL 數據庫,用C++編寫。它提供一種強大、靈活、可擴展的數據存儲形式。MongoDB功能豐富,內置MapReduce聚合的支持,支持地理空間索引。MongoDb具有弱一致性,保證用戶的訪問速度,文檔結構的訪問方式,能夠更便捷地獲取數據,內置GirdFS 支持大容量的儲存,內置Sharding,第三方支持豐富,性能優越。MongoDB在存儲空間數據比傳統的關系數據庫如MySQL 和PostgreSQL 更具優勢。MongoDB 對空間數據是原生支持,不需要安裝第三方空間數據庫引擎即可構建空間索引進行進行快速的空間查詢。MongoDB 支持平面( 2d) 和球面( 2dsphere indexes) 兩種空間索引。面向大眾型的GIS 應用會存儲大量的POI 數據或者用戶產生的位置數據,利用MongoDB 儲存可以提高檢索效率。MongoDB 支持MapReduce計算模型,處理海量LBS數據有較高的效率。MongoDB有多種基於的Node.JS的第三方庫實現對MongoDB的操作,這樣使得對數據的操作更加的便捷。
ElasticSearch
可以接受帶有空間位置坐標的信息,包括geopoint和geoshape(線面),同時可以實現空間聚合,geohash等功能。
數據管理組件
GDAL
GDAL(http://www.gdal.org/)是一個基於C++的柵格格式的空間數據格式解釋器。作為一個類庫,對於那些用它所支持的數據類型的應用程序來說它代表一種抽象的數據模型。GDAL持大多數的柵格數據類型。
在開發上GDAL支持多種語言的接口如:Perl、Python、VB6、Java、C#。
OGR
OGR(http://www.gdal.org/ogr/)是C++的簡單要素類庫提供對各種矢量數據文件格式的讀取(某些時候也支持寫)功能。OGR是根據OpenGIS的簡單要素數據模型和Simple features for COM(SFCOM)構建的。OGC也支持大多數的矢量數據類型支持數類型。
GeOxygene
GeOxygene(http://www.oxygene-project.sourceforge.net/)基於Java和開源技術同時提供一個實現OGC規范和ISO標准可擴展的對象數據模型(地理要素、幾何對象、拓撲和元數據)。它支持Java開發接口。數據存儲在關系數據中(RDBMS)保證用戶快速和可靠的訪問數據,但用戶不用擔心SQL描述語句,他們通過為應用程序建立UML和Java代碼的模型。在對象和關系數據庫之間使用開源軟件進行映射。到現在可以使用OJB同時支持Oracle和PostGIS中的數據。
GML4J
GML4J(http://gml4j.sourceforge.net/)是一個作用於Geography Markup Language(GML)的Java API工具。當前GM4J的作用是一個GML數據的掃描器。通過它可以讀取和解釋那代表地理要素、幾何對象、它們的幾何、要素的屬性、集合對象的屬性、復雜屬性、坐標系統和其他的GML結構的XML。現階段GML4J只支持GML讀取和訪問,在以后將支持GML數據的修改。
分析組件
JTS
JTS Topology Suite(http://sourceforge.net/projects/jts-topo-suite/)是一套2維的空間謂詞和函數的應用程序接口。它由Java語言寫成,提供了全的、延續的和健壯的基本的2維空間算法的實現,並且效率非常高。
Net Topology Suite(http;//nts.sourceforge.net/)則是一個.Net的開源項目,該項目的主要目的是將JTS Topology Suite應用程序提供給.Net應用程序使用。
GSLIB
GSLIB(http://www.gslib.com/)是一個提供了空間統計的程序包,它是當前最強大和綜合的一個統計包,並且具有靈活性和開放的接口。其缺點是缺少用戶支持,用戶界面不友好且缺少面向對象建模能力。
PROJ.4
PROJ.4(http://trac.osgeo.org/proj/)是一個開源的地圖投影庫,提供對地理信息數據投影以及動態轉換的功能,WMS,WFS或WCS Services也需要它的支持。
GeoTools
GeoTools(http://www.geotools.org/)是也是遵循OGC規范的GIS工具箱。它擁有一個模塊化的體系架構,這保證每個功能部分可以非常容易的加入和刪除。 GeoTools目標是支持OGC所有的規范並且各類國際規范和標准。
GeoTools已經在一個統一的框架下開發了一系列的JAVA對象集合,其完全滿足了OGC的服務端的各種服務並且提供了OGC兼容的單獨應用程序。GeoTools項目由一系列的API接口以及這些接口的實現組成。開發一整套產品或應用程序並不是GeoTools的目的,但是其鼓勵其他應用項目使用它以各類工作。
桌面平台
Grass GIS
GRASS(地理資源分析支持系統, http://grass.fbk.eu/)是一個柵格/矢量GIS、圖像處理系統和圖件成圖系統。GRASS包括超過350個程序和工具,實現:1)顯示器和紙質地或圖象的打印顯示;2)操作柵格、矢量或點數據;3)處理多光譜圖像數據;4)創建、管理和存儲空間數據。GRASS支持圖形界面或文字界面。 GRASS可以與商用打印機、繪圖儀、數字化儀或商用數據庫交互。
GRASS基於GNUGPL協議下發行,有超過100萬行的C源代碼可以自下載得到。GRASS提供了一個復雜的GIS庫,可用於開發自己的項目。
OSSIM
OSSIM(http://www.ossim.org/)是一個用於遙感、圖片處理、地理信息系統、照相測量方面的高性能軟件。OSSIM庫主要使用C++完成,支持多種平台,現在包括Linux、dows、MacOS X和Solaris,並且可以移植到其他平台。由於OSSIM庫用了模型一控制器一視圖(MCv)的結構,所以算法及實現與GUI是分離的,使得OSSIM可以支持多種GUI接口。第一個GUI的實現使用了QT,其的GUI框架及接口也在開發計划中(如Cocoa/Windows等)。
SharpMap
SharpMap(http://www.codeplex.com/SharpMap)是一個基於.net 2.0使用c#開發的Map渲染類庫,可以渲染各類GIS數據(目前支持ESRIShape和PostGIS格式),可應用於桌面和Web程序。目前穩定版本為0.9(2.0beta已發布),代碼行數10000行左右,實現了下功能:
①支持的數據格式:PostGreSQL/PostGIS,ESRI Shapefile,支持WMS layers,支持ECW 和JPEG2000 柵格數據格式;
②Windows Forms 控件,可以移動和縮放;
③通過HttpHandler支持ASP.net程序;
④點、線、多邊形、多點、多線和多多邊形等幾何類型和幾何集合(GeometryCollections)等OpenGIS Simple Features Specification;
⑤可通過Data Providers(增加數據類型支持)、Layer Types(增加層類型)和Geometry Types等擴展;
⑥圖形使用GDI+渲染,支持anti-aliased等;
⑦專題圖。
SharpMap目前可以算是一個實現了最基本功能的GIS系統,但一些很重要的功能,例如投影,比例尺,空間分析,圖形的屬性信息,查詢檢索等等,通過同NTS等開源空間類庫的結合可以在SharpMap中實現的空間變換、緩沖區等功能。
World Wind
World Wind(http://worldwind.arc.nasa.gov/)是個開放軟件,允許用戶修改WorldWind軟件本身。軟件用C#編寫,調用微軟SQLServer影像庫TerrainServer進行全球地形三位顯示,低分辨率的Blne marble數據包含的初始安裝內,當用戶放大到特定區域時,附加的高分辨率數據將會自動從NASA服務器上下載。它通過將遙感影像與RTM高程(航天飛機雷達地形數據庫)疊加生成三位地形。在功能方面,軟件具有長度測量功能(僅能測量兩點間的直線距離)、坐標和高程查詢、屏幕截圖、添加標注及三位動態顯示等功能。
MapWindow
MapWindow GIS(http://mapwindow4.codeplex.com/)桌面應用程序是一個免費開源基於標准的地理信息軟件,使用它可以瀏覽和編輯多種GIS數據格式。這個軟件包括很多地理處理的插件如:緩沖分析、合並處理等,也可以使用腳本編輯器編寫VB.NET和C#的腳本。最新版本的MapWindow應用程序完全基於.NET2.0平台和C#。現在又開發出了MapWindow.Web可以讓用戶更容易開發基於ASP.Net的web應用。這樣MapWindow逐漸形成一個完整的體系,從開發嵌入式系統的MapWinGIS.OCX到應用程序框架的MapWindow應用程序再到發布web程序的MapWindow.web。
MapWindow 6(http://mapwindow6.codeplex.com/)是在MapWindow 4的基礎上進行改進,整個框架采用C#完成,代碼完整清晰,其優點是:
①完全采用.net平台(不需要COM注冊或DLL加載);
②可以通過使用Mono運行在Mac或Linux平台上;
③大量擴展了符號集,點、線、面的符號化更豐富,而且可以基於屬性內容進行專題化,同時支持矢量化的字體符號;
④面向對象的代碼:直接對各要素進行重疊分析、相交分析等。支持OGC的幾何對象模型,基於System.Data.DataTable的數據集;
⑤可兼容的插件模式:插件的接口就像普通對象的事件對象一樣;
⑥組件模式:所有的組件通過MapWindow.dll提供,能夠拖放控件就可以定制GIS程序。
QGIS
QGIS是一個用戶界面友好的桌面地理信息系統,可運行在Linux、Unix、Mac OSX和Windows等平台之上。QGIS是基於Qt,使用C++開發的一個用戶界面友好、跨平台的開源版桌面地理信息系統。 http://www.qgis.org/
QGIS軟件的主要特點有:
1 支持多種GIS數據文件格式。通過GDAL/OGR擴展可以支持多達幾十種數據格式.
2 支持PostGIS數據庫。
3支持從WMS,WFS服務器中獲取數據
4 集成了Grass的部分功能。
5 支持對GIS數據的基本操作,如屬性的編輯修改等。
6 支持創建地圖。
7 通過插件的形式支持功能的擴展
udig
uDig是一個 open source (EPL and BSD) 桌面應用程序框架,構建在Eclipse RCP和GeoTools(一個開源的Java GIS工具包)上的桌面GIS(地理信息系統) ;是一款開源桌面GIS軟件,基於Java和Eclipse平台,可以進行shp格式地圖文件的編輯和查看;是一個開源空間數據查看器/編輯器,對OpenGIS標准,關於互聯網GIS、網絡地圖服務器和網絡功能服務器有特別的加強。uDig提供一個一般的java平台來用開源組件建設空間應用。
Grass
桌面經典GIS軟件,顯示引擎使用cario, http://grass.fbk.eu/
OpenStreetMap
OpenStreetMap(簡稱OSM,中文是公開地圖)是一個網上地圖協作計划, 由網絡大眾共同打造的免費開源、可編輯的地圖服務,目標是創造一個內容自由且能讓所有人編輯的世界地圖。
OpenStreetMap它是利用公眾集體的力量和無償的貢獻來改善地圖相關的地理數據。OSM是非營利性的,它將數據回饋給社區重新用於其它的產品與服務。而其他地圖則是將大多數的地圖數據出售給第三方。
http://www.openstreetmap.org/
Mapnik
用來開發 GIS 應用程序的工具包,其核心是一個 C++ 的共享庫提供空間數據訪問和可視化的算法和模式。OpenStreetMap地圖用mapnik渲染,顯示引擎使用AGG,效率與美感優秀。 http://mapnik.org/
OSGGIS
3D地圖制圖工具,: http://wush.net/trac/osggis
Web服務
GeoServer
GeoServer(http://geoserver.org/)是一個符合J2EE規范,且實現了WCS、WMS及WFS規格,支持TransactionWFS(WFS-T),其技術核心是整合了頗負盛名的JavaGISolkit--GeoTools。對於空間信息存儲,它支持ESRI Shapefile及PostGIS、Oracle、ArcSDE等空間數據庫,輸出的GML檔案滿足GML2.1的要求。由於它是純Java的,所以更適合於復雜的環境要求,而且由於它的開源,所以開發組織可以基於GeoServer靈活實現特定的目標要求,而這些都是商業GIS組件所缺乏的。
GeoServer作為一個純粹的Java實現,被部署在應用服務器中,簡單的如Tomcat等;它的WMS和WFS組件響應來自於瀏覽器或uDig的請求,訪問配置的空間數據庫,如PostGIS、OracleSpatial等,產生地圖和GML文檔傳輸至客戶端。
具有以下優點: 1) 用 java 語言編寫、標准的 J2EE 框架、基於 ser vlet 和 STRUTS 框架、 支持高效的 Spring 框架開發; 2) 兼容 WMS 和 WFS 特性、支持 WFS-T 規范; 3) 高效的數據庫支持 PostGIS、ShapeFile、ArcSDE,Oracle、MySQL 等; 4) 支持上百種投影; 5) 能夠將網絡地圖輸出為 jpeg、gif、png 等格式;
MapServer
MapServer(http://mapserver.org/)基於C語言,利用GEOS、OGR/GDAL對多種失量和柵格數據的支持,通過Proj.4共享庫實時的進行投影變換。同時,還集合PostGIS和開源數據庫PostgreSQL對地理空間數據進行存儲和SQL查詢操作,基於ka.map、MapLab、Cartoweb和Chameleon等一系列客戶端JavaScfiptAPI來支持對地理空間數據的傳輸與表達,並且遵守開放地理空間協會(Open Geospatial Consortium,OGC)制定的WMS、WFS、WCS、WMC、SLD、GML和FilterEncoding等一系列規范。對不同項目的借鑒和運用,增強了MapServer的功能,並使開發團隊更多地關注於網絡制圖的核心功能。
MapServer是一套用來構建空間網絡應用的開源開發環境,並不是一套全能的GIS系統,它更擅長於在網絡上展示空間數據,在服務器端實時的將地理空間數據處理成地圖發送給客戶端。MapServer擁有一個龐大的社區,並有一個來自全球的近20名核心開發人員以致力於產品的維護和增強。同時還有各種不同的組織機構為MapServer的開發和維護提供資助。
提供兩種工作方式,CGI方式(適用於CGI、AJAX、FLEX開發人員)和MapScript方式(適用於Php、Java、 C#、Python開發人員)。以原生CGI方式效率最高,配合TileCache,可以快速生成大范圍的地圖瓦片數據。比較基於.Net和J2EE的商 業或開源平台,MapServer更適合高負荷的大型互聯網地圖應用。MapServer 是基於C寫的地圖服務軟件,比用JAVA寫的GeoServer速度要快。而且 MapServer 歷史要比 GeoServer 悠久,甚至MapServer 的性能與商業的 ArcIMS 的功能可以娉美。
Mapnik
Mapnik(http://mapnik.org/)是一個用於開發地圖應用程序的工具。Mapnik用C++寫同時有Python綁定接口。使用Mapnik可以很方便的進行桌面和web應用程序開發。
Mapnik主要提供地圖的渲染功能,使用AGC庫同時提供世界級的標注引擎。可以說Mapnik是現在最強大的開源地圖渲染工具。
sse4j
Java開發的提供地理信息數據源構建的垂直搜索引擎應用接口、針對在線地圖服務(互聯網或移動互聯網)的服務端,能夠提供POI搜索、道路搜索、區域搜索、地址匹配、路徑規划、公交換乘和無線定位等功能。 http://code.google.com/p/sse4j/
Js庫
OpenLayers
OpenLayers(http://openlayers.org/)是一個開源的jS框架,用於在您的瀏覽器中實現地圖瀏覽的效果和基本的zoom,pan等功能。OpenLayers支持的地圖來源包括了WMS,GoogleMap,KaMap,MSVirtualEarth等等,您也可以用簡單的圖片作為源,在這一方面OpenLayers提供了非常多的選擇。此外,OpenLayers實現了行業標准的地理數據訪問方法如OGC的Web Mapping Service(WMS)and Web Feature Service(WFS)協議。OpenLayers可以簡單的在任何頁面中放入動態的地圖。它可以從多種的數據源加載顯示地圖。MetaCarta公司開始開發了OpenLayers的初始版本同時將它開放給了公眾以作為以后各種地理信息系統的應用。openscales(Flex): http://openscales.org/
TileCache
TileCache(http://tilecache.org/)是一個實現WMS.C的標准的服務器, TileCache提供了一個基於PythonTile的WMS.C/TMS服務器,同時具有開可插入的緩存和后台渲染機制。在最簡單的應用中,只要求TileCache可以訪問磁盤可以運行Python的CGI腳本。同時可以連接需要緩存的WMS服務。使用這些資源,你可以創建任何WMS服務在你的本地硬盤的緩存,同時使用支持WMS-C標准的客戶端如:OpenLayers或任何支持TMS的客戶端如:OpenLayers和wordKit就可以訪問這些緩存數據。
FGMAP
FGMap是一個仿Google Maps API for Flash 做的WebGIS客戶端組件,允許 Flex 開發人員將 Google Maps,MapABC地圖,Bing地圖,QQ地圖 嵌入到 Flash 應用程序中。而不需要使用KEY或驗證。 http://code.google.com/p/fgmap-webgis/
LeafLet
Leaflet 是一個為建設交互性好適用於移動設備地圖,而開發的現代的、開源的 JavaScript 庫。代碼僅有 33 KB,但它具有開發在線地圖的大部分功能。Leaflet設計堅持簡便、高性能和可用性好的哲學思想,在所有主要桌面和移動平台能高效運作,在現代瀏覽器上會利用HTML5和CSS3的優勢,同時也支持舊的瀏覽器訪問。支持插件擴展,有一個友好、易於使用的API文檔和一個簡單的、可讀的源代碼。Leaflet強大的開源庫插件涉及到地圖應用的各個方面包括地圖服務,數據提供,數據格式,地理編碼,路線和路線搜索,地圖控件和交互等類型的插件共有140多個。這些控件 豐富leaflet的功能,同時也可以十分方便的實現自定義的控件具有良好的可擴展性。http://leafletjs.com