mit 发表于 2022-7-5 18:29:00

如何从KM中读取坐标

大家好
云你能帮帮我吗?如何从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 发表于 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或其他允许搜索和替换段落标记的程序,则必须手动编辑文件。
~李

Hippe013 发表于 2022-7-5 18:47:42

这可能会让你朝着正确的方向前进
 
;Get the File Path
(setq fp (getfiled "Select XML File:" "" "xml" 16))

;Get the XML DOMDocument Object
(setq XML (vlax-create-object "MSXML.DOMDocument"))

;Load the XML File
(setq is_loaded (vlax-invoke-method XML 'load fp))

;Get the Coordinates Selection
(setq coords-sel (vlax-invoke-method XML 'getElementsByTagName "coordinates"))

;Get the Coords Element
(setq coords-Element (vlax-get-property coords-sel 'Item 0))

;Get the coords
(setq coords (vlax-get-property (vlax-get-property coords-element 'nodetypedvalue) 'value))
 
我希望这有帮助
 
当做
 
hippe013
 
P、 美国可能需要在GetField函数中用“kml”替换“xml”。

mit 发表于 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

Hippe013 发表于 2022-7-5 19:06:01

很抱歉最后一行代码应为:
 
(setq coords (vlax-variant-value (vlax-get-property coords-element 'NodeTypedValue)))
 
“coords”将为字符串类型。
 
当做
 
hippe013

mit 发表于 2022-7-5 19:08:12

太好了,非常感谢Hippe013

satishrajdev 发表于 2022-7-5 19:19:24

这真是太棒了。现在,我期待着通过获得这段代码的帮助来创建KML导入工具。

Hippe013 发表于 2022-7-5 19:25:16

没错!完成后一定要把它贴在这里!

satishrajdev 发表于 2022-7-5 19:36:29

绝对是兄弟。。。
页: [1]
查看完整版本: 如何从KM中读取坐标