如何 3d polygoncruncher kml

您所在的位置:
&KML文件专家(KML工具包) V1.0绿色版
点击查看大图
大小:11.14 MB
语言:简体中文
授权:免费软件
KML文件专家软件介绍
KML文件专家(KML工具包)绿色版可以将集KML分析,转换,生成,制作,处理,计算,规划,还有定位、导航、数据挖掘,空间分析,3D分析,DEM挖掘等等功能为一体的超强综合软件。并且考虑集成编程接口,生成KML类,可以供其它人员编程开发的KML API。
KML文件专家相关下载
KML文件专家相关教程
KML文件专家下载地址
14820次下载
107461次下载
13787次下载
10801次下载
10937次下载
8357次下载
6621次下载
1642次下载
2081次下载
3816次下载
107461次下载
43033次下载
39269次下载
36823次下载
36086次下载
34422次下载
34364次下载
32794次下载
30668次下载
29828次下载
热门关键字导读:2)Polyline类型的转换:ShapeFile文件中的Polyline类型是,在转换时,通过把该Path转换为PointCollection,3)Polygon类型的转换:ShapeFile文件中的Polygon和KML的,因为ShapeFile文件中的Polygon允许有多个外环,转换步骤如下:,利用该类获取Shapefile文件中数据类型的描述信息、记录数信息,接着存入temp向量的还2) Polyline类型的转换:ShapeFile文件中的Polyline类型是一个Path的集合。一个Path由一系列的点连接而成,它还不完全等价于KML中的LineString。一个Path又是一个Segment的集合,Segment是2个点之间的一种连接,最简单的是直线,还有可能是Bezier曲线或者其他曲线,可以把Path看作一个LineString。在转换时,如果Polyline只包括一个Path,就转为Linestring,通过把该Path转换为PointCollection,得到该Path的节点坐标,写入LineString的coordinates标签。 3) Polygon类型的转换:ShapeFile文件中的Polygon和KML的Polygon元素定义不完全相同,因为ShapeFile文件中的Polygon允许有多个外环,所以如果它的ExteriorRingCount数目为1,就把它转为一个Polygon元素,其中,外环的坐标序列别写入的coordinates标签。如果有内环的话,写入的coordinates标签。 转换步骤如下: 首先,定义一个新的ShapefileInfo类,利用该类获取Shapefile文件中数据类型的描述信息、记录数信息,并存放在一个temp向量中。接着存入temp向量的还有DBF文件中的字段名、字段类型、字段描述信息,ShapefileInfo类中的坐标范围、字段个数、记录个数、字段的长度信息。最终存入temp向量的是SimpleClassData类,包含Shapefile类型描述、空间数据配色表与文件名信息。至此,数据的解析过程就算结束,接下来,要进行KML文档的构建。 Shape文件是按照地物类型来组织的。地物类型可以分为简单的点(Point)、线(Line)、面(Polygon)三种类型,一个Shape文件中只能包括一种类型的地物,即只能包括点、线或者面状地物中的一种。对于点、线、面三种类型,构建KML数据的流程如下所示。 第一步,生成一个后缀为KML的文件,写入XML的声明。第二步,从temp向量中获取KML数据的坐标范围,并且定义FeatureMember标记。第三步,依据FeatureMember判断出数据的类型。根据数据的类型调用不同的构建过程。对于点、线、面,其具体的构建过程基本相似,下面以线为例进行探讨。如果是线,那么写入LineString标记,同时构建当前线元素。此时,重复以上判断,当完成SHP数据中所有类型的数据转换之后,将这几种类型的KML标记整合到一个KML文件中,SHP数据到KML数据的转换便成功完成。 4.2编程实现的过程 1)实现的准备阶段 分析KML文件的结构和特点,发现其数据结构是以树的形式来存储的,而KML文件也是一种派生的XML文件。以ArcGIS中的VBA语言为平台对数据格式进行转换,而且COM对象中也有Microsoft提供的XML对象,可供VBA调用。除此之外,KML还可以用记事本程序编辑,可作为一种txt文档或Word文档进行处理,这时就可以运行txt文档处理的相关技术。处理文字的利器是正则表达式,用正则表达式提取出满足一定条件的数据。如:-122.0839-122.0839 可用正则表达式搜索。除了用正则表达式外,还可以采用文本分割的方式,找一个分割标记,如为分割标记,把文本分成三部分,中间部分-122.0839则是要取出的数据。 2) 程序的实现阶段 如果你精通一门语言,你很快就能理解。各种编程语言其实在语法上是差不多的,无论是C语言,Delphi, VB语言还是易语言都各有特色。但其共同点就是:面向对象的可视化编程。而且每种语言都提供了不同的函数以实现不同的功能,这些都可抽象为一种接口。使用这种面向对象的编程方法可以节省很多时间,减少重复的代码。 KML语法的灵活性,使得KML文件中的标签组织结构并不是固定的。简单的KML只有少许标签,主要包含名字,经度,纬度,和坐标,且每一标签都是唯一的。但复杂的KML文件里则包含多个名字,多个点,甚至包含线条,多边形,轨迹点的形式,这样每个标签就不是单一的结构。采用处理文本的方式无疑增加了难度。我们不能只开发能读取和转换一部分格式的程序,否则就不能被广范使用。编码的问题,由于生成KML的方式不同导致有两种编码:UTF8和ANSI。如果你搜索到名字为乱码,可以换一种编码模式搜索。地标点,轨迹点(路径),多边形,暂只可转换多边形文件,其实转换点状和线状也不难,但程序结构更加复杂。只要搜索(.*?)标签,然后用“,0”来分割文本,放入数组再循环显示出来就可以了。 5.核心代码部分 Sub ShapefileTOkml() Dim pMx As IMxDocument Set pMx = ThisDocument Dim pFL As IFeatureLayer Set pFL = pMx.FocusMap.Layer(1) LayerName = pFL.Name m_strAltitudeMode = \Dim pfc As IFeatureClass Set pfc = pFL.FeatureClass Dim pQF As IQueryFilter
'查询过滤器 Set pQF = New QueryFilter pQF.WhereClause = \Dim pSRF As ISpatialReferenceFactory2
'空间系统厂,类似于工作空间厂 Set pSRF = New SpatialReferenceEnvironment Dim pGCS As IGeographicCoordinateSystem Set pGCS = pSRF.CreateGeographicCoordinateSystem(esriSRGeoCS_WGS1984) Dim pGeodataset As esriGeoDatabase.IGeoDataset
Set pGeodataset = pFL Dim psr As IProjectedCoordinateSystem '定义为投影坐标 Set psr = pSRF.CreateProjectedCoordinateSystem(102008) 'esriSRProjCS_NAD1983N_AmericaAlbers,North America Albers Dim m_pSpRefInput As ISpatialReference
Set m_pSpRefInput = pGeodataset.SpatialReference
Dim m_pSpRefOutput As ISpatialReference
Set m_pSpRefOutput = pGCS
m_pSpRefOutput.SetFalseOriginAndUnits -180, -90, 1000000 Set pMx.FocusMap.SpatialReference = psr Dim pfcur As IFeatureCursor Set pfcur = pfc.Search(pQF, True) '第二个参数表示是否回收记录占用的内存,false表示不回收,当目的是更新和插入时,内存不回收 Dim pf As IFeature Set pf = pfcur.NextFeature Open \Print #1, \Print #1, \Print #1, \Print #1, \ \Print #1, \ 1\Print #1, \ <Snippet maxLines=\Print #1, \ \Print #1, \
\Print #1, \
\Print #1, \
\Print #1, \
<Snippet maxLines=\Print #1, \
#\Print #1, \
\Print #1, \
<SchemaData schemaUrl=\
Print #1, \
Print #1, \
Print #1, \
Print #1, \
Print #1, \
Print #1, \
\Print #1, \
Print #1, \
Print #1, \
\\Print #1, \
\Print #1, \
\Print #1, \
\Dim strXYZCoordinates(10000) As String c = 0 Dim m_strXCoord As String Dim m_strYCoord As String Dim m_strZCoord As String Dim pPoly As IPolygon Do Until pf Is Nothing Set pf = pfcur.NextFeature If pf.Shape.GeometryType = esriGeometryPolygon Then
Set pPoly = pf.Shape
m_strXCoord = pPoly.FromPoint.X
m_strYCoord = pPoly.FromPoint.Y
m_strZCoord = pPoly.FromPoint.Z End If
strXYZCoordinates(c) = m_strXCoord & \
Print #1, \
Set pf = pfcur.NextFeature Loop Print #1, \
\Print #1, \
\Print #1, \
\Print #1, \
\Print #1, \
\Print #1, \
\Print #1, \Print #1, \End Sub 【程序测试】: 开发环境:WINDOWS
XP SP2,CPU 2.8G, 内存4GB 运行环境:WINDOWS
2000以上, 内存512MB以上 基于ArcGIS中的VBA平台(数据为ArcGIS中自带的country.shp数据)
【参考文献】: 1. 曹礼刚,王绪本.空间数据转换与考古数据探测WebGIS.计算机工程(
Computer Engineering).) 2. ShapeFile文档技术白皮书[Z]. (). http://www.esri. com/library/whitepapers/pdfs/shapefile.pdf 3. CSDN博客 http://blog.csdn.net/carlbiao/archive//3685728.aspx http://blog.csdn.net/suen/archive//1679983.aspx 4. Google Earth官方网站 / 5. 中国XML编程站 http://www./index.html 6. GIS帝国论坛 /bbs/ 7. 地理信息系统论坛社区 http://www.gisforum.net/bbs/ 包含总结汇报、文档下载、人文社科、教学研究、党团工作、IT计算机、经管营销以及ESRI的Shapefile文件向Google Earth中KML文件的格式转换等内容。本文共4页
相关内容搜索本帖子已过去太久远了,不再提供回复功能。

我要回帖

更多关于 csgopolygon 的文章

 

随机推荐