有關(guān)“未定義坐標(biāo)系”的數(shù)據(jù)如何粗略判別是什么坐標(biāo)系,,已經(jīng)在上篇的第5.1節(jié)寫明了,這里想說的是,,已經(jīng)定義好坐標(biāo)系統(tǒng)的程序/數(shù)據(jù),,在哪里找。 目錄:0. 預(yù)備知識(shí)(WKT的概念) 1. 硬盤上的數(shù)據(jù)/數(shù)據(jù)庫(shp,、geojson,、tif柵格、幾個(gè)單文件數(shù)據(jù)庫,、kml/gml/gpx) 2. GIS數(shù)據(jù)服務(wù)種的坐標(biāo)系(2.1 ArcGIS家的/2.2 geoserver的) 3. 代碼種的坐標(biāo)系(3.1 AO/AE 3.2 ArcGIS JsAPI 3.3 openlayers 3.4 ceisum) 0. 預(yù)備知識(shí)0.1. WKT和json在網(wǎng)絡(luò)傳輸?shù)牡匚灰粯?,是一個(gè)標(biāo)記語言,全稱Well-Known Text,,和上文提及的Well-Known ID出自同一個(gè)組織——OGC,。 WKT是用文本形式記錄地理信息的一個(gè)標(biāo)記語言。什么是地理信息,?除開我們常見的真·地理信息點(diǎn)線面之類,,還包括坐標(biāo)系統(tǒng)的定義。我們可以在epsg.io這個(gè)網(wǎng)站查詢想知道的坐標(biāo)系的WKID,,也可以查到想知道坐標(biāo)系的WKT。 例如,,WKID=4326的坐標(biāo)系的WKT如下: GEOGCS["WGS 84", DATUM["WGS_1984", SPHEROID["WGS 84",6378137,298.257223563, AUTHORITY["EPSG","7030"]], AUTHORITY["EPSG","6326"]], PRIMEM["Greenwich",0, AUTHORITY["EPSG","8901"]], UNIT["degree",0.0174532925199433, AUTHORITY["EPSG","9122"]], AUTHORITY["EPSG","4326"]] 此處不展開WKT的每一項(xiàng)定義,。因?yàn)閃KT的博客實(shí)在太多了,本文略過不作為主要內(nèi)容,。 通常,,如果拿到一個(gè)WKT,我會(huì)觀察最外層定義是GEOGCS還是PROJCS,,這能判斷是地理坐標(biāo)系或投影坐標(biāo)系統(tǒng),。 然后,若為GEOGCS,,我會(huì)在AUTHORITY處判斷它被epsg定義的WKID,,上面這個(gè)wkt即4326. WKT還有一種二進(jìn)制存儲(chǔ)格式,叫WKB,。有關(guān)這兩個(gè)東西的文檔在ogc官網(wǎng)是可查的,。 1. 硬盤上的數(shù)據(jù)/數(shù)據(jù)庫1.1. shapefiles簡稱shp文件,。shp文件至少有*.shp、*.shx,、*.dbf三個(gè)同名文件組成,,若想為shp文件定義一個(gè)坐標(biāo)系,告訴它“你的空間信息落于哪個(gè)坐標(biāo)系下”,,那就要再多一個(gè)同名的*.prj文件,。 一個(gè)shp文件通常要有以上4個(gè)文件,若無prj文件只會(huì)在加載時(shí)不知道它的坐標(biāo)系信息,,實(shí)際數(shù)據(jù)并無影響,,所以說shp文件的最低下限是shp、shx,、dbf三大文件,。 有關(guān)shp文件的構(gòu)成格式不再補(bǔ)充,也能在ogc官網(wǎng)查到對應(yīng)標(biāo)準(zhǔn),。 此prj文件內(nèi)坐標(biāo)系的信息,,就是WKT文本。 PROJCS["Xian_1980_3_Degree_GK_CM_114E", GEOGCS["GCS_Xian_1980", DATUM["D_Xian_1980", PHEROID["Xian_1980",6378140.0,298.257]], PRIMEM["Greenwich",0.0], UNIT["Degree",0.0174532925199433]], PROJECTION["Gauss_Kruger"], PARAMETER["False_Easting",500000.0], PARAMETER["False_Northing",0.0], PARAMETER["Central_Meridian",114.0], PARAMETER["Scale_Factor",1.0], PARAMETER["Latitude_Of_Origin",0.0], UNIT["Meter",1.0]] 此處若無AUTHORITY信息,,可以用PROJCS內(nèi)第一個(gè)字符串"Xian_1980_3_Degree_GK_CM_114E"去epsg.io查詢(epsg.io不支持模糊查詢,,用空格替換下劃線,盡量刪減一些關(guān)鍵詞)
1.2. GeoJsongeojson是一種用json標(biāo)記的地理數(shù)據(jù)文件,,記錄二維信息多一些,,通常用于webgis傳遞。與turf,、arcgis jsapi,、openlayers等結(jié)合較好。 geojson也是一種ogc規(guī)范,,開源,。 打開一個(gè)geojson文件: 其中,頭部“crs”字段就是坐標(biāo)系信息,,我們可以訪問其properties.name獲取有關(guān)EPSG信息,,此處WKID為32650。 但是,,在大多數(shù)時(shí)候geojson是沒有crs字段的,,例如: 這就要問數(shù)據(jù)的提供者了。 1.3. 影像數(shù)據(jù)(tif文件為例)tif文件為柵格圖像文件,,后綴為tif或tiff,,是ogc規(guī)范的一種,全稱GeoTiff,。 通常不能在資源管理器中查看tif柵格影像數(shù)據(jù)的坐標(biāo)系信息,,需要用GIS軟件查看,,因?yàn)樗淖鴺?biāo)系信息寫在數(shù)據(jù)文件內(nèi)部。 如下圖: 此為ArcMap中Catalog查看數(shù)據(jù)的屬性,。 1.4. postgis/geopackage/esri geodatabase等數(shù)據(jù)庫這些地理數(shù)據(jù)庫的數(shù)據(jù)均可在客戶端查看,,以QGIS為例,打開這些數(shù)據(jù)庫里的要素查看坐標(biāo)系信息,。 ①postgis postgresql的一個(gè)插件,。
②geopackage geopackage是一種輕量的單文件數(shù)據(jù)庫,是sqlite的特例應(yīng)用,。
geopackage在QGIS里的支持還不算很強(qiáng),,我的版本是3.8.1,還不支持右鍵導(dǎo)入,,拖拽的方式倒是可以,。 讀取坐標(biāo)系的方法一樣。
③gdb QGIS只能讀取gdb里的表格和要素?cái)?shù)據(jù),,復(fù)雜的數(shù)據(jù)因?yàn)閑sri商用問題不能讀取,。
1.5. kml(kmz)/gml/gpxkmz用壓縮軟件解壓后可獲取kml文件。kml是xml格式的一種特殊化,,原來用于Google Earth的數(shù)據(jù)交互,,它與geojson的區(qū)別在于它可以帶符號(hào)、顏色,、樣式信息,。 kml由于早期為Google Earth使用,由上篇可知默認(rèn)使用WGS84(WKID=4326)坐標(biāo)系,,所以大多數(shù)kml文件是沒有寫入坐標(biāo)系信息的(至少我在QGIS里導(dǎo)出的kml沒有),。 但是,在ogc文檔中有定義坐標(biāo)系:http://docs./is/12-007r2/12-007r2.html#1274 此處不展開,。 gml也是類似的一種xml擴(kuò)展標(biāo)記語言,,同樣為ogc規(guī)范的一種。 其坐標(biāo)系信息寫在這里,,比較顯眼: 最后一個(gè)gpx文件,是GPS衛(wèi)星的信息記錄,,也是一種xml的應(yīng)用,。因?yàn)槭荊PS(早期GPS指美國GPS),所以用的是WGS84坐標(biāo)系,。 2. GIS數(shù)據(jù)服務(wù)2.1. ArcGIS Server①地圖服務(wù) 訪問MapServerURL,,可查看地圖服務(wù)的基本信息: https://sampleserver6./arcgis/rest/services/Census/MapServer 圈出的Spatial Reference即為此地圖服務(wù)(包括所有圖層)的WKID。 ②影像服務(wù) 同地圖服務(wù),,但是影像服務(wù)并沒有子圖層,。 例子:https://landsat2./arcgis/rest/services/Landsat8_Views/ImageServer ③場景服務(wù) 場景服務(wù),,URL結(jié)尾是SceneServer,訪問后返回json,,在控制臺(tái)可以通過這樣來訪問: 即可獲取其坐標(biāo)系,。 注意,fetch函數(shù)在各主流瀏覽器中較新版本均支持,,IE不清楚未測試,。 本例URL為:http://scene./arcgis/rest/services/Hosted/Building_Hamburg/SceneServer ④要素服務(wù) 基本方法同地圖服務(wù),但是要注意的是要素服務(wù)既可單獨(dú)作為FeatureServer,,也可以存在于MapServer中(作為要素圖層),。 URL例子: https://services./V6ZHFr6zdgNZuVG0/arcgis/rest/services/ks_earthquakes_since_2000/FeatureServer https://sampleserver6./arcgis/rest/services/USA/MapServer/0(若為MapServer中的要素圖層,請?jiān)L問上一級(jí)的MapServer查看坐標(biāo)系) ⑤網(wǎng)絡(luò)分析服務(wù) 網(wǎng)絡(luò)分析服務(wù),,URL以NAServer結(jié)尾,,因博主暫無網(wǎng)絡(luò)分析服務(wù)的URL,暫時(shí)不能給例子,,用法應(yīng)該與MapServer類似,。 ⑥高程服務(wù) 高程服務(wù),以ImageServer為載體,。方法同影像服務(wù),。 例子:https://sampleserver6./arcgis/rest/services/Elevation/MtBaldy_Elevation/ImageServer 2.2. GeoServerwms/wfs/wcs訪問其描述xml,然后查看layer對應(yīng)的"CRS"屬性即可,。 例如: wms的URL:http://<domain>:<port>/geoserver/wms?service=wfs&version=1.1.0&request=GetCapabilities wfs的URL:http://<domain>:<port>/geoserver/wfs?service=wfs&version=1.1.0&request=GetCapabilities wcs的URL:http://<domain>:<port>/geoserver/wfs?service=wcs&version=1.1.0&request=GetCapabilities 訪問此URL,,瀏覽器會(huì)下載一個(gè)xml文件,通過尋找以下標(biāo)簽的值,,即可獲取對應(yīng)圖層的坐標(biāo)系: <WMT_MS_Capabilities> |
|