MapX的坐标问题
                            
                            
                            我們知道,一個(gè)GIS開發(fā)包或者GIS平臺(tái),和一般的圖形系統(tǒng)的差別就在于其管理的對(duì)象都是有空間參考(或者叫地理參考)的,簡(jiǎn)而言之,空間參考就是坐標(biāo)系,但坐標(biāo)系不是簡(jiǎn)單的笛卡爾坐標(biāo)系,因?yàn)榈厍蚴菆A的。有關(guān)的文獻(xiàn)可以參考一般的地圖學(xué)教材。
對(duì) 于GIS系統(tǒng),坐標(biāo)系是和每個(gè)對(duì)象對(duì)應(yīng)的,也就是說,任何一個(gè)空間對(duì)象(Feature)都必須有一個(gè)空間參考,但在實(shí)現(xiàn)中,一般是一個(gè)圖層對(duì)應(yīng)一個(gè)空間 參考,也就是坐標(biāo)系。而整個(gè)地圖也有一個(gè)空間參考,并且有的系統(tǒng),這個(gè)參考還分為實(shí)際內(nèi)部數(shù)據(jù)的和顯示的(例如MapX)。
MapX的空 間參考可以通過CoordSys object來設(shè)置。設(shè)置的類型包括平面坐標(biāo)(笛卡爾坐標(biāo),Non-Earth),經(jīng)緯度以及各類投影坐標(biāo)系統(tǒng)。然后這個(gè)CoordSys對(duì)象可以和圖 層、Map對(duì)象關(guān)聯(lián),或者說,每個(gè)Layer對(duì)象和Map對(duì)象都有自己的空間參考。
在MapX中,圖層的空間參考可以通過Layer.CoordSys屬性來獲取或者設(shè)置。
MapX 的Map對(duì)象的空間參考則可以通過Map.DisplayCoordSys和Map.NumericCoordSys屬性來設(shè)置,前者是顯示的坐標(biāo),后者 是實(shí)際的坐標(biāo)。如果你把前者設(shè)置為經(jīng)緯度,后者設(shè)置為投影坐標(biāo),那么通過Map的工具量測(cè)得到就是前者的坐標(biāo)單位,而通過FeatureFactory對(duì) 象添加屬性,使用的坐標(biāo)就是后者。
那么對(duì)應(yīng)層和Map對(duì)象空間參考不一致的情況,顯示的時(shí)候就要實(shí)時(shí)(onfly)變換。
在我們使用FeatureFactory添加坐標(biāo)的時(shí)候,一定要清楚當(dāng)前地圖的NumericCoordSys屬性的設(shè)置。
而創(chuàng)建一個(gè)Point的對(duì)象的時(shí)候,使用的也是NumericCoordSys這個(gè)坐標(biāo)體系。
對(duì)于一個(gè)沒有添加任何數(shù)據(jù)的MapX控件,其Map的NumericCoordSys屬性為平面坐標(biāo),如果使用Layers.Add添加圖層,這個(gè)屬性就自動(dòng)變?yōu)樘砑拥牡谝粋€(gè)圖層的空間參考。
如果加載GeoSet,則坐標(biāo)體系通過GeoSet創(chuàng)建。
通過MapX的Layers.Add方法新建圖層,一般不需要指定圖層的空間參考,也無法在LayerInfo對(duì)象中指定文件圖層對(duì)象的空間參考,這時(shí),創(chuàng)建的圖層的空間參考為MapX的空間參考(NumericCoordSys)。
另外,使用平面坐標(biāo)(Non-Earth)時(shí),需要指定其范圍,缺省好像是-100到100,太小,但也不能太大,不確定的情況下,使用int.max就合適,太大數(shù)據(jù)溢出,就等于很小了。
坐標(biāo)是GIS開發(fā)一個(gè)比較頭疼的問題,遇到類似的問題的朋友,希望這篇東西會(huì)有益處。
                        
                        
                        對(duì) 于GIS系統(tǒng),坐標(biāo)系是和每個(gè)對(duì)象對(duì)應(yīng)的,也就是說,任何一個(gè)空間對(duì)象(Feature)都必須有一個(gè)空間參考,但在實(shí)現(xiàn)中,一般是一個(gè)圖層對(duì)應(yīng)一個(gè)空間 參考,也就是坐標(biāo)系。而整個(gè)地圖也有一個(gè)空間參考,并且有的系統(tǒng),這個(gè)參考還分為實(shí)際內(nèi)部數(shù)據(jù)的和顯示的(例如MapX)。
MapX的空 間參考可以通過CoordSys object來設(shè)置。設(shè)置的類型包括平面坐標(biāo)(笛卡爾坐標(biāo),Non-Earth),經(jīng)緯度以及各類投影坐標(biāo)系統(tǒng)。然后這個(gè)CoordSys對(duì)象可以和圖 層、Map對(duì)象關(guān)聯(lián),或者說,每個(gè)Layer對(duì)象和Map對(duì)象都有自己的空間參考。
在MapX中,圖層的空間參考可以通過Layer.CoordSys屬性來獲取或者設(shè)置。
MapX 的Map對(duì)象的空間參考則可以通過Map.DisplayCoordSys和Map.NumericCoordSys屬性來設(shè)置,前者是顯示的坐標(biāo),后者 是實(shí)際的坐標(biāo)。如果你把前者設(shè)置為經(jīng)緯度,后者設(shè)置為投影坐標(biāo),那么通過Map的工具量測(cè)得到就是前者的坐標(biāo)單位,而通過FeatureFactory對(duì) 象添加屬性,使用的坐標(biāo)就是后者。
那么對(duì)應(yīng)層和Map對(duì)象空間參考不一致的情況,顯示的時(shí)候就要實(shí)時(shí)(onfly)變換。
在我們使用FeatureFactory添加坐標(biāo)的時(shí)候,一定要清楚當(dāng)前地圖的NumericCoordSys屬性的設(shè)置。
而創(chuàng)建一個(gè)Point的對(duì)象的時(shí)候,使用的也是NumericCoordSys這個(gè)坐標(biāo)體系。
對(duì)于一個(gè)沒有添加任何數(shù)據(jù)的MapX控件,其Map的NumericCoordSys屬性為平面坐標(biāo),如果使用Layers.Add添加圖層,這個(gè)屬性就自動(dòng)變?yōu)樘砑拥牡谝粋€(gè)圖層的空間參考。
如果加載GeoSet,則坐標(biāo)體系通過GeoSet創(chuàng)建。
通過MapX的Layers.Add方法新建圖層,一般不需要指定圖層的空間參考,也無法在LayerInfo對(duì)象中指定文件圖層對(duì)象的空間參考,這時(shí),創(chuàng)建的圖層的空間參考為MapX的空間參考(NumericCoordSys)。
另外,使用平面坐標(biāo)(Non-Earth)時(shí),需要指定其范圍,缺省好像是-100到100,太小,但也不能太大,不確定的情況下,使用int.max就合適,太大數(shù)據(jù)溢出,就等于很小了。
坐標(biāo)是GIS開發(fā)一個(gè)比較頭疼的問題,遇到類似的問題的朋友,希望這篇東西會(huì)有益處。
轉(zhuǎn)載于:https://www.cnblogs.com/maweifeng/archive/2006/09/23/512705.html
總結(jié)
 
                            
                        - 上一篇: 今天下午爽了一把!
- 下一篇: 园子里关于罗辑树与视觉树的文章
