MapInfo表的问题我在MapInfo中画的路网地图的结点图层和线路图层定义路线表结构为ID StartPoint EndPoint Length结点表结构为 ID我想要把路线表的StartPoint EndPoint 与结点表的ID联系起来,即线路的起
来源:学生作业帮助网 编辑:作业帮 时间:2024/06/27 15:29:56
![MapInfo表的问题我在MapInfo中画的路网地图的结点图层和线路图层定义路线表结构为ID StartPoint EndPoint Length结点表结构为 ID我想要把路线表的StartPoint EndPoint 与结点表的ID联系起来,即线路的起](/uploads/image/z/15146623-55-3.jpg?t=MapInfo%E8%A1%A8%E7%9A%84%E9%97%AE%E9%A2%98%E6%88%91%E5%9C%A8MapInfo%E4%B8%AD%E7%94%BB%E7%9A%84%E8%B7%AF%E7%BD%91%E5%9C%B0%E5%9B%BE%E7%9A%84%E7%BB%93%E7%82%B9%E5%9B%BE%E5%B1%82%E5%92%8C%E7%BA%BF%E8%B7%AF%E5%9B%BE%E5%B1%82%E5%AE%9A%E4%B9%89%E8%B7%AF%E7%BA%BF%E8%A1%A8%E7%BB%93%E6%9E%84%E4%B8%BAID++StartPoint++EndPoint++Length%E7%BB%93%E7%82%B9%E8%A1%A8%E7%BB%93%E6%9E%84%E4%B8%BA+ID%E6%88%91%E6%83%B3%E8%A6%81%E6%8A%8A%E8%B7%AF%E7%BA%BF%E8%A1%A8%E7%9A%84StartPoint++EndPoint+%E4%B8%8E%E7%BB%93%E7%82%B9%E8%A1%A8%E7%9A%84ID%E8%81%94%E7%B3%BB%E8%B5%B7%E6%9D%A5%2C%E5%8D%B3%E7%BA%BF%E8%B7%AF%E7%9A%84%E8%B5%B7)
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-------"