MapInfo表的问题我在MapInfo中画的路网地图的结点图层和线路图层定义路线表结构为ID StartPoint EndPoint Length结点表结构为 ID我想要把路线表的StartPoint EndPoint 与结点表的ID联系起来,即线路的起
来源:学生作业帮助网 编辑:六六作业网 时间:2024/12/19 23:53:09
MapInfo表的问题我在MapInfo中画的路网地图的结点图层和线路图层定义路线表结构为ID StartPoint EndPoint Length结点表结构为 ID我想要把路线表的StartPoint EndPoint 与结点表的ID联系起来,即线路的起
MapInfo表的问题
我在MapInfo中画的路网地图的结点图层和线路图层
定义路线表结构为ID StartPoint EndPoint Length
结点表结构为 ID
我想要把路线表的StartPoint EndPoint 与结点表的ID联系起来,即线路的起点和终点都是相应的结点ID,下图是我画的结点图层和线路图层,望大神指教,
更新StartPoint EndPoint列为对应DataID线路的起点和终点ID,如线路的起点结点ID是1,终点结点ID是2,则相应的StartPoint 列为1,EndPoint列为2
MapInfo表的问题我在MapInfo中画的路网地图的结点图层和线路图层定义路线表结构为ID StartPoint EndPoint Length结点表结构为 ID我想要把路线表的StartPoint EndPoint 与结点表的ID联系起来,即线路的起
1.首先下面的代码不一定能解决你的问题,但是可以作为一个参考,你后续如果问题解决了,也请告诉我到底该怎么做.
2.我这里假设你的startpoint和endpoint都是字符型的空值,如果程序运行多次,请确保每次运行前先将startpoint和endpoint赋值为空
3.代码给startpoint的赋值结果,不能保证是图形矢量化方向的起点,而可能是矢量化方向的终点.endpoint也是一样.如果必须一致,那么下面的代码是行不通的.
4.不知道你的Node图层和Line的端点是否完全重合,如果不能保证,建议先对Node做个缓冲图层buffer,程序中也相应将Node修改为buffer.否则可能有些线段端点不能赋值成功.
include "mapbasic.def"
open window message
Dim sAppPath as String
Dim myobj as object
Dim ID as String'''''''''''查看一下你表中的ID是什么字段,再决定类型
Dim rwid as Integer
sAppPath = ApplicationDirectory$()
open table sAppPath+"Line.tab" as tabLine
open table sAppPath+"Node.tab" as tabNode
fetch first from tabNode
do while not eot(tabNode)
myobj=tabNode.obj
ID=tabNode.ID'''''''''''''''
select * from tabLine where obj intersects myobj into temp
\x05fetch first from temp
\x05do while not eot(temp)
\x05rwid=temp.rowid
\x05if(temp.startpoint="")then'''''''这里前提是原数据startpoint和endpoint都为空
\x05\x05update temp set startPoint=ID where rowid=rwid
\x05\x05goto aaa
end if
\x05if(temp.endpoint="")then
\x05\x05update temp set endPoint=ID where rowid=rwid
\x05\x05goto aaa
\x05end if
aaa:\x05\x05
\x05fetch next from temp
\x05loop
fetch next from tabNode
loop
commit table tabLine
close all
print "OK-------"