乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 37|回复: 8

[编程交流] 如何从KM中读取坐标

[复制链接]
mit

13

主题

33

帖子

20

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
65
发表于 2022-7-5 18:29:00 | 显示全部楼层 |阅读模式
大家好
云你能帮帮我吗?如何从KML文件中读取和导入坐标
内部文件包含代码:
.
Vatphiawat。kml
1.3
http://maps.google.com/mapfiles/kml/pushpin/ylw-pushpin.png
1.1
http://maps.google.com/mapfiles/kml/pushpin/ylw-pushpin.png
Vatphiawat公司
#m_ylw-图钉
1.
102.614364152051,17.95733901085014,0 102.6148784682264,17.95771822280192,0 102.6142663942859,17.95835128371222,0 102.6141224420007,17.95824935570436,0 102.6137704879814,17.95798561968717,0 102.614364152051,17.95733901085014,0
回复

使用道具 举报

lrm

1

主题

257

帖子

282

银币

限制会员

铜币
-13
发表于 2022-7-5 18:37:02 | 显示全部楼层
如果只想假设kml文件中给定的经度和纬度是AutoCAD中的x和y坐标,可以执行以下操作。这可能有点离经叛道,但它确实有效!
 
1.将点模式设置为您可以轻松看到的模式。例如:pdmode 34
2.将kml文件的坐标标记…内的经度(x)、纬度(y)和高程值复制并粘贴到MS Word中。
3.在Word中使用replace命令,并将所有空格替换为^ ppoint。注意,点后有一个空格字符。^p是新段落的通配符。确保第一行也以点(空格)开始。这里有一个示例,说明了此时文件应该是什么样子。
 
点102.614364152051,17.95733901085014,0
点102.6148784682264,17.95771822280192,0
点102.6142663942859,17.95835128371222,0
点102.6141224420007,17.95824935570436,0
点102.6137704879814,17.95798561968717,0
点102.614364152051,17.95733901085014,0
 
4.将Word文件另存为纯文本文件(.txt)
5、将文件扩展名从更改为。txt到。scr。
6、在AutoCAD中发出脚本命令,并打开。您在上面创建的scr文件。
7、最大化。您可能需要重新生成以获得合适的点符号大小。
 
使用经度和纬度当然不是真正的x,y坐标。随着向两极移动,经度值的比例会缩小。UTM坐标提供的失真较小,但如果您靠近UTM区域的边界,则可能会导致其他问题。UTM坐标以公里为单位定义网格。
 
如果您没有MS Word或其他允许搜索和替换段落标记的程序,则必须手动编辑文件。
~李
回复

使用道具 举报

20

主题

338

帖子

323

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
100
发表于 2022-7-5 18:47:42 | 显示全部楼层
这可能会让你朝着正确的方向前进
 
  1. ;Get the File Path
  2. (setq fp (getfiled "Select XML File:" "" "xml" 16))
  3. ;Get the XML DOMDocument Object
  4. (setq XML (vlax-create-object "MSXML.DOMDocument"))
  5. ;Load the XML File
  6. (setq is_loaded (vlax-invoke-method XML 'load fp))
  7. ;Get the Coordinates Selection
  8. (setq coords-sel (vlax-invoke-method XML 'getElementsByTagName "coordinates"))
  9. ;Get the Coords Element
  10. (setq coords-Element (vlax-get-property coords-sel 'Item 0))
  11. ;Get the coords
  12. (setq coords (vlax-get-property (vlax-get-property coords-element 'nodetypedvalue) 'value))

 
我希望这有帮助
 
当做
 
hippe013
 
P、 美国可能需要在GetField函数中用“kml”替换“xml”。
回复

使用道具 举报

mit

13

主题

33

帖子

20

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
65
发表于 2022-7-5 18:54:18 | 显示全部楼层
非常感谢李
非常感谢hippe013,这是一个很棒的代码,但我认为它有一些错误,我会试试
 
这是我运行它时的代码:
 
-命令:(setq fp(getfield“Select XML File:”“kml”16))
>>“D:\\Desktop\\Vatphiawat.kml”
-命令:(setq XML(vlax create object“MSXML.DOMDocument”))
>>#
-命令:(setq已加载(vlax invoke方法XML’load fp))
>>:vlax true
-命令:(setq coords sel(vlax invoke method XML'getElementsByTagName“coordinates”))
>>#
-命令:(setq coords元素(vlax get property coords sel’Item 0))
>>#
-命令:(setq coords(vlax get property(vlax get property coords元素'nodetypedvalue)'值))
>>; 错误:错误的参数类型:VLA-OBJECT#
 
它的末尾代码有点错误。
云你能帮帮我吗?非常感谢hippe013
回复

使用道具 举报

20

主题

338

帖子

323

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
100
发表于 2022-7-5 19:06:01 | 显示全部楼层
很抱歉最后一行代码应为:
 
  1. (setq coords (vlax-variant-value (vlax-get-property coords-element 'NodeTypedValue)))

 
“coords”将为字符串类型。
 
当做
 
hippe013
回复

使用道具 举报

mit

13

主题

33

帖子

20

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
65
发表于 2022-7-5 19:08:12 | 显示全部楼层
太好了,非常感谢Hippe013
回复

使用道具 举报

55

主题

402

帖子

357

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
274
发表于 2022-7-5 19:19:24 | 显示全部楼层
这真是太棒了。现在,我期待着通过获得这段代码的帮助来创建KML导入工具。
回复

使用道具 举报

20

主题

338

帖子

323

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
100
发表于 2022-7-5 19:25:16 | 显示全部楼层
没错!完成后一定要把它贴在这里!
回复

使用道具 举报

55

主题

402

帖子

357

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
274
发表于 2022-7-5 19:36:29 | 显示全部楼层
绝对是兄弟。。。
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-12 19:53 , Processed in 1.010550 second(s), 70 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表