理解ArcIMS投影元素
生活随笔
收集整理的這篇文章主要介紹了
理解ArcIMS投影元素
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
ArcIMS 中的坐標系統由 ArcIMS 空間服務器( Spatial Server )通過三個 ArcXML 投影( projection )元素來管理:???COORDSYS -輸入的數據圖層的投影
???FEATURECOORDSYS -地圖服務的輸出投影
???FILTERCOORDSYS -外包矩形框( envelope )或地圖配置文件中空間過濾( Spatial filters )條件的坐標系統
每個投影元素通過 id 屬性或字符串的定義( string 屬性)作為指向坐標系統的引用。 id 屬性只用一個編號就可以引用預定義的坐標系統,非常快速。而 string 屬性描述坐標系統的所有參數,包括基準面 (datum), 單位 (units) 和起始子午線 (meridians) ,以及其它一些可進行基準面轉換的可選參數。在 ArcXML Programmer's Reference Guide 文檔中 Projection Element 部分 有詳盡的關于 ArcIMS 支持的坐標系統、基準面轉換,以及 id 編號和定義字符串的描述。
所有的坐標系統都可納入地理和投影兩大類。地理坐標系統是三維的,由經緯度描述位置。在投影坐標系統中,地球表面投影到二維平面上,由米或英尺來定位,叫做平面坐標或笛卡兒坐標。
輸入圖層的投影
地圖配置文件中的每個層都必須有坐標系統。 COORDSYS 是定義數據層的投影元數據的方法之一。請注意該元素只用于申明數據層的投影 , 而非對層的投影進行轉換。它可以用于定義 shapefiles, 使用 ArcSDE for coverage 的 coverages , ArcSDE 圖層,支持的柵格圖像和 acetate 圖層。
大多數情況下, COORDSYS 元素不是地圖配置文件的必要元素。當下列情況存在時,需要采用該元素:
???沒有定義 shapefile 的投影文件(后綴 *.prj )
???沒有定義 ArcSDE for coverage 的 .prj 文件
???ArcSDE 中沒有空間參考信息表
???需要層的基準面轉換信息
???使用柵格圖層
對于沒有投影信息的輸入圖層,可在文本編輯器或 XML 編輯器中將 COORDSYS 元素加入到地圖配置文件中。當使用了非英文字符時,請確認 XML 編輯器支持 UTF-8 的編碼方式。 COORDSYS 元素是 LAYER 元素的子元素,如果即沒有 .prj 文件、空間參考表,也沒有 COORDSYS 元素,圖層就不能進行正確的投影。
在地圖配置文件中添加投影元素
在地圖配置文件中, FEATURECOORDSYS 元素指明 ArcIMS 服務的輸出坐標系統。 FILTERCOORDSYS 指明文件中的外包矩形框或者空間過濾條件的坐標系統。這些元素都是 PROPERTIES 元素的子元素。
在 ArcIMS Author 中創建地圖配置文件時,也定義了 ArcIMS 服務的 ENVELOPE 元 素中的范圍屬性。所有的地圖配置文件必須包含 ENVELOPE 元素。當定義 FILTERCOORDSYS 元素時,請確信坐標系統元素與 ENVELOPE 的單位匹配。
當地圖配置文件中包含 FILTERCOORDSYS 時,就必須包含 FEATURECOORDSYS 元素。而且 FILTERCOORDSYS 和 FEATURECOORDSYS 的值必須相同,并且成為服務器端默認的投影方式。
地圖配置文件舉例:
<?xml version="1.0" encoding="UTF-8"?>
<ARCXML version="1.1">
<CONFIG>
<ENVIRONMENT>
<LOCALE country="US" language="en" variant=""/>
<UIFONT color="0,0,0" name="Arial" size="12" style="regular"/>
</ENVIRONMENT>
<MAP dynamic="true">
<PROPERTIES>
<MAPUNITS units="decimal_degrees"/>
<FEATURECOORDSYS id="54030" />
<FILTERCOORDSYS id="54030" />
<ENVELOPE minx="-16986727.8564406" miny="-12740045.8907383" maxx="16986727.8564406" maxy="12740045.8939226" />
</PROPERTIES>
<WORKSPACES>
<SHAPEWORKSPACE name="shp_ws-14" directory="E:\student\World"/>
</WORKSPACES>
<LAYER type="featureclass" name="World Grid" visible="true" id="Grid">
<DATASET name="grid" type="polygon" workspace="shp_ws-14"/>
<SIMPLERENDERER>
<SIMPLEPOLYGONSYMBOL boundarytransparency="1.0" filltransparency="1.0" fillcolor="69,138,195" boundarycaptype="round" boundarycolor="255,255,255"/>
</SIMPLERENDERER>
</LAYER>
<LAYER type="featureclass" name="Countries" visible="true" id="Countries">
<DATASET name="country" type="polygon" workspace="shp_ws-14"/>
<SIMPLERENDERER>
<SIMPLEPOLYGONSYMBO boundarytransparency="1.0" filltransparency="1.0" fillcolor="148,172,151" boundarycaptype="round" boundarycolor="64,64,64"/>
</SIMPLERENDERER>
</LAYER>
</MAP>
</CONFIG>
</ARCXML>
例中, World Robinson ( id = 54030 )用于指明兩個投影元素的坐標系統。因為 FEATURECOORDSYS 元素指明服務輸出的投影,那么任何由該地圖配置文件生成的 ArcIMS 服務都與該元素指明的坐標系統相匹配,見圖 1 。 當地圖配置文件中含有 FEATURECOORDSYS 元素時, MAPUNITS 元素會被忽略。 ArcIMS 空間服務器根據 FEATURECOORDSYS 元素定義的坐標系統來決定正確的地圖單位。
響應客戶端請求,動態進行投影轉換
發送請求:
對于地圖配置文件例 1 中相應的地圖服務,發送包含投影元素的 GET_IMAGE 請求:
<?xml version="1.0" encoding="UTF-8" ?>
<ARCXML version="1.1">
??<REQUEST>
????<GET_IMAGE>
??????<PROPERTIES>
????????<FILTERCOORDSYS id="54008" />
????????<FEATURECOORDSYS id="54008" />
??????</PROPERTIES>
????</GET_IMAGE>
??</REQUEST>
</ARCXML>
因為指定了轉換的投影,所以在服務器返回的圖片(如圖 2 )中,兩圖層都轉換成了 id 為 54008 的 Sinusoidal 投影。
請注意:在請求 (request) 中, ENVELOPE 的值與 FILTERCOORDSYS 一致;在 response( 響應 ) 中, ENVELOPE 與 FEATURECOORDSYS 一致。
性能和處理時間
進行投影轉換非常耗時 , 較好的解決辦法:準備好相應投影的數據,以減少對投影元素的使用。即建立網站時使用的數據,已經符合投影要求,而不需要再進行投影轉換。
???FEATURECOORDSYS -地圖服務的輸出投影
???FILTERCOORDSYS -外包矩形框( envelope )或地圖配置文件中空間過濾( Spatial filters )條件的坐標系統
每個投影元素通過 id 屬性或字符串的定義( string 屬性)作為指向坐標系統的引用。 id 屬性只用一個編號就可以引用預定義的坐標系統,非常快速。而 string 屬性描述坐標系統的所有參數,包括基準面 (datum), 單位 (units) 和起始子午線 (meridians) ,以及其它一些可進行基準面轉換的可選參數。在 ArcXML Programmer's Reference Guide 文檔中 Projection Element 部分 有詳盡的關于 ArcIMS 支持的坐標系統、基準面轉換,以及 id 編號和定義字符串的描述。
所有的坐標系統都可納入地理和投影兩大類。地理坐標系統是三維的,由經緯度描述位置。在投影坐標系統中,地球表面投影到二維平面上,由米或英尺來定位,叫做平面坐標或笛卡兒坐標。
輸入圖層的投影
地圖配置文件中的每個層都必須有坐標系統。 COORDSYS 是定義數據層的投影元數據的方法之一。請注意該元素只用于申明數據層的投影 , 而非對層的投影進行轉換。它可以用于定義 shapefiles, 使用 ArcSDE for coverage 的 coverages , ArcSDE 圖層,支持的柵格圖像和 acetate 圖層。
大多數情況下, COORDSYS 元素不是地圖配置文件的必要元素。當下列情況存在時,需要采用該元素:
???沒有定義 shapefile 的投影文件(后綴 *.prj )
???沒有定義 ArcSDE for coverage 的 .prj 文件
???ArcSDE 中沒有空間參考信息表
???需要層的基準面轉換信息
???使用柵格圖層
對于沒有投影信息的輸入圖層,可在文本編輯器或 XML 編輯器中將 COORDSYS 元素加入到地圖配置文件中。當使用了非英文字符時,請確認 XML 編輯器支持 UTF-8 的編碼方式。 COORDSYS 元素是 LAYER 元素的子元素,如果即沒有 .prj 文件、空間參考表,也沒有 COORDSYS 元素,圖層就不能進行正確的投影。
在地圖配置文件中添加投影元素
在地圖配置文件中, FEATURECOORDSYS 元素指明 ArcIMS 服務的輸出坐標系統。 FILTERCOORDSYS 指明文件中的外包矩形框或者空間過濾條件的坐標系統。這些元素都是 PROPERTIES 元素的子元素。
在 ArcIMS Author 中創建地圖配置文件時,也定義了 ArcIMS 服務的 ENVELOPE 元 素中的范圍屬性。所有的地圖配置文件必須包含 ENVELOPE 元素。當定義 FILTERCOORDSYS 元素時,請確信坐標系統元素與 ENVELOPE 的單位匹配。
當地圖配置文件中包含 FILTERCOORDSYS 時,就必須包含 FEATURECOORDSYS 元素。而且 FILTERCOORDSYS 和 FEATURECOORDSYS 的值必須相同,并且成為服務器端默認的投影方式。
地圖配置文件舉例:
<?xml version="1.0" encoding="UTF-8"?>
<ARCXML version="1.1">
<CONFIG>
<ENVIRONMENT>
<LOCALE country="US" language="en" variant=""/>
<UIFONT color="0,0,0" name="Arial" size="12" style="regular"/>
</ENVIRONMENT>
<MAP dynamic="true">
<PROPERTIES>
<MAPUNITS units="decimal_degrees"/>
<FEATURECOORDSYS id="54030" />
<FILTERCOORDSYS id="54030" />
<ENVELOPE minx="-16986727.8564406" miny="-12740045.8907383" maxx="16986727.8564406" maxy="12740045.8939226" />
</PROPERTIES>
<WORKSPACES>
<SHAPEWORKSPACE name="shp_ws-14" directory="E:\student\World"/>
</WORKSPACES>
<LAYER type="featureclass" name="World Grid" visible="true" id="Grid">
<DATASET name="grid" type="polygon" workspace="shp_ws-14"/>
<SIMPLERENDERER>
<SIMPLEPOLYGONSYMBOL boundarytransparency="1.0" filltransparency="1.0" fillcolor="69,138,195" boundarycaptype="round" boundarycolor="255,255,255"/>
</SIMPLERENDERER>
</LAYER>
<LAYER type="featureclass" name="Countries" visible="true" id="Countries">
<DATASET name="country" type="polygon" workspace="shp_ws-14"/>
<SIMPLERENDERER>
<SIMPLEPOLYGONSYMBO boundarytransparency="1.0" filltransparency="1.0" fillcolor="148,172,151" boundarycaptype="round" boundarycolor="64,64,64"/>
</SIMPLERENDERER>
</LAYER>
</MAP>
</CONFIG>
</ARCXML>
例中, World Robinson ( id = 54030 )用于指明兩個投影元素的坐標系統。因為 FEATURECOORDSYS 元素指明服務輸出的投影,那么任何由該地圖配置文件生成的 ArcIMS 服務都與該元素指明的坐標系統相匹配,見圖 1 。 當地圖配置文件中含有 FEATURECOORDSYS 元素時, MAPUNITS 元素會被忽略。 ArcIMS 空間服務器根據 FEATURECOORDSYS 元素定義的坐標系統來決定正確的地圖單位。
響應客戶端請求,動態進行投影轉換
發送請求:
對于地圖配置文件例 1 中相應的地圖服務,發送包含投影元素的 GET_IMAGE 請求:
<?xml version="1.0" encoding="UTF-8" ?>
<ARCXML version="1.1">
??<REQUEST>
????<GET_IMAGE>
??????<PROPERTIES>
????????<FILTERCOORDSYS id="54008" />
????????<FEATURECOORDSYS id="54008" />
??????</PROPERTIES>
????</GET_IMAGE>
??</REQUEST>
</ARCXML>
因為指定了轉換的投影,所以在服務器返回的圖片(如圖 2 )中,兩圖層都轉換成了 id 為 54008 的 Sinusoidal 投影。
請注意:在請求 (request) 中, ENVELOPE 的值與 FILTERCOORDSYS 一致;在 response( 響應 ) 中, ENVELOPE 與 FEATURECOORDSYS 一致。
性能和處理時間
進行投影轉換非常耗時 , 較好的解決辦法:準備好相應投影的數據,以減少對投影元素的使用。即建立網站時使用的數據,已經符合投影要求,而不需要再進行投影轉換。
轉載于:https://www.cnblogs.com/googlegis/archive/2008/12/04/2979082.html
總結
以上是生活随笔為你收集整理的理解ArcIMS投影元素的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ArcGIS.Server.9.3和Ar
- 下一篇: 解决神州数码校园上网客服端软件不能在Wi