国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
MapInfo中按區(qū)域分割地圖的方法(帶MapBasic方法)
問題的提出:
我有一幅由三個圖層組成的地圖,一幅為河流,一幅全國大市圖,一幅為全國的縣市圖,現(xiàn)在有MAPINFO以其中的佛山為中心,分割出一個正方形的地圖。這么分割啊,不能是編程的,希望能寫出具體步驟。
問題的追問:
一:分割一個正方形地圖?一個還是很多個同樣大小的正方形。而且正方形的大小是多少?
二:所說的區(qū)域是以什么參考區(qū)域來分割?是上面說的正方形還是各個省市這樣的區(qū)域?
三:分割后是獨立成各個TAB文件還是什么?如何命名?
問題的補充:
一個正方形就形了;還有因為能通過MAPINFO的放大與縮小,所以很難說他的大小,不過只要求這個正方形能覆蓋佛山這個城市就行了;還有作晚說錯了,不是全國地圖,而是兩廣地圖啊。兩廣的河流地圖,市地圖,縣市圖;置于區(qū)域:如果是在市地圖的話,包含佛山大市整個對象,佛山大市的周圍城市對象,就只能包含其一小部分了。同理如果是在縣市圖,佛山大市有四個區(qū),正方形內(nèi)要包含這四區(qū);這四區(qū)的周圍縣市就只能包含其一小部分了;在河流地圖的話,就不要這么嚴(yán)格了,不用分成正方形了;是分別保存的,所以可以分別來分割,不用一起分割了。
個人覺得:
覺得一,因為能通過MAPINFO的放大與縮小,所以很難說他的大?。ㄎ宜f的大小不是相對大小,而是絕對大小,即在地圖上是多少米長寬的方形,這個大小是無法改變的);
覺得二,如果是在市地圖的話,包含佛山大市整個對象,佛山大市的周圍城市對象,就只能包含其一小部分了(覺得沒有錯誤),同理如果是在縣市圖,佛山大市有四個區(qū),正方形內(nèi)要包含這四區(qū)(覺得有錯誤,應(yīng)該是每個方形包括一個區(qū),共四個區(qū)那么有四個方形。PS:經(jīng)過百度搜索在南方網(wǎng)發(fā)現(xiàn)佛山下面共有六個區(qū),即城區(qū)、石灣區(qū)、順德區(qū)、南海區(qū)、三水區(qū)、高明區(qū)[http://www.southcn.com/news/gdnews/informations/bianmzl/200201100675.htm ],不知道什么時候變成四個區(qū)了,可能市最新的劃分吧。不過查詢了國家行政編碼標(biāo)準(zhǔn)代碼,發(fā)現(xiàn)有三區(qū)四縣,即市轄區(qū)440601、城區(qū)440602、石灣區(qū)440603、順德市440681、南海市440682、三水市440683、高明市440684)
覺得三,只要求這個正方形能覆蓋佛山這個城市就行(那么,這個區(qū)域的界線應(yīng)該比較清楚,最好有一個行政區(qū)劃這樣的面層,這樣所用方形的大小比較容易確定,不然是點或線或者在字段中有界線區(qū)分的話要求自行判定方形大小,即要看區(qū)域內(nèi)對象的minx,miny,maxx和maxy來確定這個方形)
覺得四,超出方形范圍內(nèi)的線和面需要打斷或裁減。
覺得五,所說的正方形應(yīng)該是矩形。(個人猜測和認為,因為如果地圖投影是經(jīng)緯度投影的話就不大可能是正方形)
個人解決思路:
以一個大市來舉例說明,把佛山市分割成四個區(qū),即上面所說的大市下的小市,共需要分成四個方形。(我沒有對方數(shù)據(jù)故以上海市樣圖數(shù)據(jù)做演示說明,把上海市下的各個區(qū)分割開,每個區(qū)一個獨立的方形)
在一個空層上繪制出方形,方形正好覆蓋這個區(qū)。將被方形包住的點選出,線和面選出后露在方形外面的部分切割掉,把這些選中的點線面提取出來,分割就完成了。(說起來還想很簡單的,也就那么兩句話,實現(xiàn)不一定容易,發(fā)現(xiàn)論壇上許多人都提問分割問題,我想應(yīng)該和這個問題類似吧)
具體解決步驟:
其實我是先做了BASIC程序完成這個問題的,但為了明了起見,我還是先講用MAPINFO中如何操作實現(xiàn),然后引入BASIC程序這樣程序便比較容易理解了。
第一步:畫框。根據(jù)行政區(qū)域來畫,如果沒有這樣的區(qū)域,請根據(jù)我上面所說的先找到minx,miny,maxx和maxy,根據(jù)最大坐標(biāo)和最小坐標(biāo)來畫。
第二步:點的解決。把上面的框?qū)幼鳛榈?,點層設(shè)為可編輯,運用面板上的邊界選擇工具點下方形區(qū)則所有在框內(nèi)的點被全部選中了。把選中的Selection表另存副本就可以了。
第三步:線的解決。同樣把方形框?qū)幼鳛榈?,選中線層所有對象(也可以是一個框下的部分)并把線層設(shè)為可編輯,菜單欄工具設(shè)置為對象,再選中一個方形框,然后菜單欄工具擦除外部(也可以分解,在下面的程序中運用的就是分解的方法)。需要注意擦除后要保存值,不然你的表就為空了。然后選中剛才方形框下的線對象另存就可以了。(也用邊界選擇工具選擇,當(dāng)然為了下一個方形的數(shù)據(jù)沒有改變請不要保存,只將你需要的選中另存就可以了)
第四步:面的解決。同上。
程序方法:
程序中均為些比較簡單的MAPBASIC語句,我就不多解釋了,程序中已經(jīng)解釋了部分。
  MapBasic代碼
 1  Include  " MAPBASIC.DEF "
 2  dim  minx,miny,maxx,maxy  as  float
 3  dim  myobj  as   object
 4  dim  ii  as   integer
 5  open table  " G:\sh_tab\Admin_Ploy.TAB "   as  admin_ploy  ' 面,方形范圍取于此面
 6  open table  " G:\sh_tab\Land.TAB "   as  land  ' 面
 7  open table  " G:\sh_tab\POI.TAB "   as  poi  ' 點
 8  open table  " G:\sh_tab\Road_Line.TAB "   as  road  ' 線
 9  open table  " G:\sh_tab\temp.TAB "   as  temp  ' 臨時面層,請預(yù)先建立,主要用于建立臨時方形
10  map from temp,poi,road,land,admin_ploy
11  set  map layer  " temp "  editable  on
12  fetch first from admin_ploy
13  ii = 1
14  do   while   not  eot(admin_ploy)
15    select   *  from admin_ploy where rowid = ii into tempa
16   minx = tableinfo(tempa,TAB_INFO_MINX)
17   miny = tableinfo(tempa,TAB_INFO_MINY)
18   maxx = tableinfo(tempa,TAB_INFO_MAXX)
19   maxy = tableinfo(tempa,TAB_INFO_MAXY)
20   create rect (minx,miny) (maxx,maxy)
21   ii = ii + 1
22   fetch  next  from admin_ploy
23  loop
24  set  map layer  " temp "  editable off
25 
26  fetch first from temp
27  ii = 1
28  do   while   not  eot(temp)
29   myobj = temp.obj
30    ' 點的選擇與輸出,輸出為MIF的,也可以直接保存TAB的
31    select   *  from poi where obj partly within myobj into tempa
32   export  " tempa "  into  " G:\sh_tab\temp\poi " + ii + " .mif "  type  " MIF "
33    ' 線,對線進行分割后再保存,以保證方形外的不包括
34    set  map layer  " road "  editable  on
35    select   *  from road
36    set  target  on
37    select   *  from temp where rowid = ii
38   Objects  Split  Into Target data name = name,class = class,remark = remark
39    select   *  from road where obj within myobj into tempa
40   export  " tempa "  into  " G:\sh_tab\temp\road " + ii + " .mif "  type  " MIF "
41   Rollback Table road
42    set  map layer  " road "  editable off
43    ' 面
44    set  map layer  " land "  editable  on
45    select   *  from land
46    set  target  on
47    select   *  from temp where rowid = ii
48   Objects  Split   Into Target data name = name,class = class,remark = remark
49    select   *  from land where obj within myobj into tempa
50   export  " tempa "  into  " G:\sh_tab\temp\land " + ii + " .mif "  type  " MIF "
51   Rollback Table land
52    set  map layer  " land "  editable off
53   ii = ii + 1
54   fetch  next  from temp
55  loop
56  note  " OK "
57 
58 
問題的延伸: 其他的許多分割問題也應(yīng)該可以從這上面啟發(fā)應(yīng)用。比如把一個1:100W的圖分成1:2.5W的大比例圖也可以運用此方法。本來想用MAPINFO OLE+VB做的,沒有太多時間,所以先做了個簡單的BASIC程序,有空再補上吧。有點累了,所以上面一些寫的比較簡單了,如有不明白的地方可以提出來我再詳細解釋下。最后我也不知道我這樣做是否算實現(xiàn)了功能呢?
歡迎大家討論和指正,謝謝。
 
 
 
 
 
本文來自CSDN博客,轉(zhuǎn)載請標(biāo)明出處:http://blog.csdn.net/binghuiliang/archive/2008/02/19/2107455.aspx
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
MapInfo多個TAB圖層合并的制作
ARCGIS中shp格式轉(zhuǎn)換為mapinfo中TAB格式
MapInfo中的*.Tab文件轉(zhuǎn)換成*.shp文件
如何制作簡單的電子地圖
GPS車輛定位系統(tǒng)設(shè)計,嵌入式計算機,GPS(全球定位系統(tǒng)),GIS(地理信息系統(tǒng))-中電...
MapInfo中文網(wǎng) | Mapinfo教程與操作技巧
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服