我們知道,乙個gis開發包或者gis平台,和一般的圖形系統的差別就在於其管理的物件都是有空間參考(或者叫地理參考)的,簡而言之,空間參考就是座標系,但座標系不是簡單的笛卡爾座標系,因為地球是圓的。有關的文獻可以參考一般的地圖學教材。
對 於gis系統,座標系是和每個物件對應的,也就是說,任何乙個空間物件(feature)都必須有乙個空間參考,但在實現中,一般是乙個圖層對應乙個空間 參考,也就是座標系。而整個地圖也有乙個空間參考,並且有的系統,這個參考還分為實際內部資料的和顯示的(例如mapx)。
mapx的空 間參考可以通過coordsys object來設定。設定的型別包括平面座標(笛卡爾座標,non-earth),經緯度以及各類投影座標系統。然後這個coordsys物件可以和圖 層、map物件關聯,或者說,每個layer物件和map物件都有自己的空間參考。
在mapx中,圖層的空間參考可以通過layer.coordsys屬性來獲取或者設定。
mapx 的map物件的空間參考則可以通過map.displaycoordsys和map.numericcoordsys屬性來設定,前者是顯示的座標,後者 是實際的座標。如果你把前者設定為經緯度,後者設定為投影座標,那麼通過map的工具量測得到就是前者的座標單位,而通過featurefactory對 象新增屬性,使用的座標就是後者。
那麼對應層和map物件空間參考不一致的情況,顯示的時候就要實時(onfly)變換。
在我們使用featurefactory新增座標的時候,一定要清楚當前地圖的numericcoordsys屬性的設定。
而建立乙個point的物件的時候,使用的也是numericcoordsys這個座標體系。
對於乙個沒有新增任何資料的mapx控制項,其map的numericcoordsys屬性為平面座標,如果使用layers.add新增圖層,這個屬性就自動變為新增的第乙個圖層的空間參考。
如果載入geoset,則座標體系通過geoset建立。
通過mapx的layers.add方法新建圖層,一般不需要指定圖層的空間參考,也無法在layerinfo物件中指定檔案圖層物件的空間參考,這時,建立的圖層的空間參考為mapx的空間參考(numericcoordsys)。
另外,使用平面座標(non-earth)時,需要指定其範圍,預設好像是-100到100,太小,但也不能太大,不確定的情況下,使用int.max就合適,太大資料溢位,就等於很小了。
座標是gis開發乙個比較頭疼的問題,遇到類似的問題的朋友,希望這篇東西會有益處。
delphi 中的Mapx 開發
一 安裝好mapx後,選擇delphi的 ponent import active 選單新增,mapinfo mapx組 件。新增完成後,在activex面板上,將會出來乙個tmap控制項。二 拖乙個tmap控制項到工程中改名為mainmap,這樣就產生了乙個tmap的物件。三 在地圖上建立圖層使用...
杯具的MAPX安裝
第一次準備用mapx,安裝就出現這怪問題,安裝了好幾遍都看似安好了,開發功能都還是不能用。現在終於找到解決方法了。對於mapx5.02中文版好像必須通過光碟或虛擬光碟機安裝才能有開發功能,這是什麼原因?知道的可以告知小弟。我就是通過虛擬光碟機安了一下就ok了。安裝注意事項 對於mapx5.02中文版...
OSG座標問題
v push back osg vec3 1.f,0.f,1.f v push back osg vec3 1.f,0.f,1.f v push back osg vec3 1.f,0.f,1.f v push back osg vec3 1.f,0.f,1.f 這是乙個快速入門上面第乙個例子的部分...