gpt4 book ai didi

java - 使用 OpenMap API 我应该使用哪个类从 shapefile 中提取点数据?

转载 作者:行者123 更新时间:2023-11-30 05:10:04 24 4
gpt4 key购买 nike

我目前正在使用 Shapefile 类和 ColdFusion 来浏览每个 shapefile 的“记录”。每条记录都有一个边界框,我能够获取此信息,但还没有找到一种方法来实际检索每条记录内的点。

有人可以阐明要使用哪些类以及如何使用它们吗?

这与以下情况完全相同(包括一些措辞):

http://old.nabble.com/what-class-do-you-use-to-extract-data-from-.SHP-files--td20208204.html

尽管我使用的是 ColdFusion,但我确实相信解决方案的任何提示都会对我有很大帮助。

我当前的测试代码如下:

<cfset shapeFile = createObject("java","com.bbn.openmap.layer.shape.ShapeFile")>

<cfset shapeFile.init('/www/_Dev/tl_2009_25_place.shp')>

<cfoutput>
getFileLength = #shapeFile.getFileLength()#<br>
getFileVersion = #shapeFile.getFileVersion()#<br>
getShapeType = #shapeFile.getShapeType()#<br>
toString = #shapeFile.toString()#<br>
</cfoutput>
<cfdump var="#shapeFile#">
<cfdump var="#shapeFile.getBoundingBox()#"> <br>
<cfdump var="#shapeFile.getNextRecord()#">

最佳答案

我从未使用过这个,也没有做过任何 GIS,但在查看 API 后,这是我的建议。

因此,在获得 shapefile 后,您将:

myESRIRecord = shapeFile.getNextRecord();

这会给你一个 ESRIRecord类或其子类之一,具体取决于它的形状类型。

我为了解决这个问题而弄乱的形状文件是:

http://russnelson.com/india.zip

并且仅包含 polygon类型。

ESRIPolygonRecord 包含一个名为“polygons”的属性,其中包含 com.bbn.openmap.layer.shape.ESRIPoly$ESRIFloatPoly 实例的数组。

这个库的关键似乎是很多数据都在属性中,无法通过方法访问。

因此,正如我所说,ESRIPolygonRecords 的数据位于 Polygons 属性中,ESRIPointRecord 的数据位于 x 和 y 属性中。因此,如果您正在寻找 getX() 或 getY(),这就是您找不到它的原因。

这个示例代码对我有用:

<cfset shapeFile = createObject("java","com.bbn.openmap.layer.shape.ShapeFile")>

<cfset shapeFile.init('/tmp/india-12-05.shp')>

<!--- There may be more then one record, so you can repeat this, or loop to get
more records --->
<cfset myRecord = shapeFile.getNextRecord()>

<!--- Get the polygons that make up this record --->
<cfset foo = myRecord.polygons>

<cfdump var="#foo#">

<cfloop array="#foo#" index="thispoly">
<cfoutput>
This poly has #thisPoly.nPoints# points:<br>
<!--- because java arrays are 0 based --->
<cfset loopEnd = thisPoly.nPoints-1>
<cfloop from="0" to="#loopEnd#" index="i">
X: #thisPoly.getX(i)# Y: #thisPoly.getY(i)#<br>
</cfloop>
<!--- Returns points as array --->
<cfdump var="#thisPoly.getDecimalDegrees()#">
<cfdump var="#thisPoly.getRadians()#">
</cfoutput>
</cfloop>

关于java - 使用 OpenMap API 我应该使用哪个类从 shapefile 中提取点数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3737861/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com