问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

mapinfo怎么读取地图节点的坐标?

发布网友 发布时间:2022-05-02 14:39

我来回答

1个回答

热心网友 时间:2022-06-20 12:19

从Mapinfo读取节点或数据坐标信息。可采用3种办法:

.mif/mid文件中读取。在mapinfo中选export file,把地图中的数据信息输出到mif/mid文件中。在程序中打开mif文件读取。可以得到如线段起始和终点坐标等等.

主要是C语言对文件操作。

从地图table表直接读取,读取表中的数据一般用FetcH。具体操作如下:

1. Use a Fetch statement to specify which row in the table you want to query.
This action sets which row is current.
2. Use a table-reference expression (e.g. tablename.columnname) to access a
specific column in the current row.
For example, the following program reads the contents of the Country column from
the first row of the World table:
Dim s_name As String
Open Table ”world” Interactive
Fetch First From world
s_name = world.Country

MapBasic例子程序:读表中FROMLEFT一项的数据

Include "MAPBASIC.DEF"

Dim s_name As Integer

Open Table "D:\aa\street\onhalts1"
Map From onhalts1

Dim i,counter As Integer
Fetch First From onhalts1
Do While Not EOT(onhalts1)
s_name = onhalts1.FROMLEFT
Print "The name: "+ s_name
i = i + 1
Fetch Next From onhalts1
Loop

Print "Number of undeleted records: " + i

读Object信息。
MapBasic程序:读出Object的节点坐标,长度,segment数。
Include "MAPBASIC.DEF"
Dim table_OBJ As String
table_OBJ = "JPN1RAIL.obj"

Dim geogr_length As Float,
x1,y1,x2,y2 As Float
Open Table "D:\aa\japan\JPN1RAIL"
Map From JPN1RAIL
Dim i,counter As Integer
i = 0
Fetch First From JPN1RAIL
Do While Not EOT(JPN1RAIL)

'counter = ObjectInfo(JPN1RAIL.obj, OBJ_INFO_NPNTS)
counter = ObjectInfo(JPN1RAIL.obj, OBJ_INFO_NPOLYGONS)

x1 = ObjectNodeX(JPN1RAIL.obj, 1, 1) ' read longitude
x2 = ObjectNodeX(JPN1RAIL.obj, 1, ObjectInfo(JPN1RAIL.obj, 20)) ' read longitude
y1 = ObjectNodeY(JPN1RAIL.obj, 1, 1) ' read latitude
y2 = ObjectNodeY(JPN1RAIL.obj, 1, ObjectInfo(JPN1RAIL.obj, 20)) ' read latitude

geogr_length = ObjectLen(JPN1RAIL.obj, "km")
Print "The length: "+ geogr_length+"x1:"+ x1+"y1:"+y1
'Print "The length: "+ geogr_length+"Counter:"+ counter

i = i + 1
Fetch Next From JPN1RAIL

Loop
Print "Number of undeleted records: " + i
============================================================================================
float geogr_length;
int nPolygons,Segment,node_Num;
CString strCommand;

mapinfo.Do("Dim i As Integer");

sprintf(str,"Fetch First From %s",Table_name);
mapinfo.Do(str);

num=493;
for(int i=0;i<num;i++)
{
sprintf(str,"ObjectInfo(%s,20)",Table_obj);
node_Num = atoi (mapinfo.Eval(str));//OBJ_INFO_NPNTS
sprintf(str,"ObjectInfo(%s,21)",Table_obj);
Segment = atoi (mapinfo.Eval(str));//OBJ_INFO_NPOLYGONS

sprintf(str,"ObjectNodeX(%s,1,1)",Table_obj);
x1[i] = (float)atof(mapinfo.Eval(str));
sprintf(str,"ObjectNodeY(%s,1,1)",Table_obj);
y1[i] = (float)atof(mapinfo.Eval(str));

sprintf(str,"ObjectNodeX(%s,1,ObjectInfo(%s, 20))",Table_obj,Table_obj);
x2[i] = (float)atof(mapinfo.Eval(str));

sprintf(str,"ObjectNodeY(%s,1,ObjectInfo(%s, 20))",Table_obj,Table_obj);
y2[i] = (float)atof(mapinfo.Eval(str));

geogr_length = atof( mapinfo.Eval("ObjectLen(JPN1RAIL.obj, \"km\") "));
sprintf(str,"Fetch Next From %s",Table_name);
mapinfo.Do(str);
}
mapinfo.Do("Print \"Number of undeleted records: \" + i ");

Fetch First From world
Note world.obj

counter = ObjectInfo(CHINAHWY.obj, OBJ_INFO_NPNTS)表示一个多边形有多少个点(segment+section)。

ObjectNodeX(xxx.obj, 1, counter)

一个polyline Object有line segments 和line sections组成。属性有节点数,长度,节点坐标,segment数和section数。
用函数counter = ObjectInfo(JPN1RAIL.obj, OBJ_INFO_NPOLYGONS)
ObjectNodeX(JPN1RAIL.obj, 1, 1) ' read x
ObjectNodeY(JPN1RAIL.obj, 1, 1) ' read y
ObjectLen(JPN1RAIL.obj, "km")
等求出。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
求大学生谈恋爱的各种弊端 大学生恋爱的利大于弊吗? 大学生谈恋爱的弊处 dnf现在站街16000的物攻 增加100物攻能张多少 家里养的蚕宝宝是要蜕皮了吗 富贵包硬和软的区别 【已完成】为什么腋窝突然有异味? 女生为什么有狐臭症状? 为什么会狐臭 万视宝这个牌子是做什么的?有人了解嘛? 地理位置坐标后面是五位数怎么读 cm是厘米还是分米 www 地图坐标如何念 ?打个比方 35°00‘46.68’&#39;N 怎么口述 在感情里,情商高的女人会用哪些“套路”向男人撒娇? 男生有哪些高段位的撩妹套路? excel制表的时候为什么不能用上下左右键移动表块请问怎么设置回来 当有人问我:你觉得我有多高。怎样回答? 你多高啊是一个套路吗 女生问你每身高怎么回? 暧昧的男生,有一天在聊微信时候,突然问我对了一直想问你有多高,他是见过我几次,他本身有182 两个可以同时绑定一张银行卡吗? 两个同时绑定一个银行卡号、一方转账另一方有记录嚒? 一个手机号注册两个微信后,两个能同时绑定一样的银行卡吗 两个绑定一张银行卡,一个支付后,另一个会接收相关信息吗? 两个可以绑定同一张银行卡吗? 两个可以同时绑定一张银行卡吗 两个绑定同一张银行卡,如何取消另一个手机微信支付? 两个能用同样一张身份证跟银行卡实名认证吗? 一张银行卡可以同时绑定两个吗? 一个银行卡能不能绑两个? cm是代表,米还是分米 点坐标的读法? 在平面直角坐标系里,点的坐标应该怎么读呢,有没有规定的呢? dm是分米还是厘米? 怎么识别地图经纬线交叉点的坐标 新人,不装插件,地图坐标怎么看 梦见坐船,船还没走就烂了。还梦见和我老公说离婚 我梦见自己坐渡船过河到河中间船被我弄坏了,不好渡人过好了船主跟我要... 梦见自己坐船在海上在海上飞驰,然后船翻烂了,我也会到了岸上 梦见我在水里划船,但船坏了等人修 梦见老婆坐船船坏了 为什么用docker-compose方式启动的docker容器找不到映射的端口? 《猫和老鼠》中的汤姆猫的头像有哪些? 谁能给我些 会说话的汤姆猫的图片做头像啊 恩哼。 老鼠的汤姆猫qq头像可以取什么名字? 求老版qq头像灰色汤姆猫 11号 高清大图! 汤姆猫飞车为什么不支持自定义头像? 一对情侣,女方QQ用汤姆猫头像,男的用皮卡丘,是不是不太合适? 求一张猫和老鼠中的图做QQ头像 求一个猫和老鼠杰瑞躺在床上挥手汤姆坐着挥手的头像 汤姆猫跑酷怎么重新登录