Я никогда не использовал это и не делал никаких ГИС, но, посмотрев на API, вот мое предложение.
Итак, после того, как у вас есть шейп-файл, вы должны:
myESRIRecord = shapeFile.getNextRecord();
Получается класс ESRIRecord или один из его подклассов, в зависимости от типа фигуры.
Шейп-файл, с которым я столкнулся, чтобы выяснить это:
http://russnelson.com/india.zip
И содержит только полигонов типов.
ESRIPolygonRecord содержит свойство под названием «полигоны», которое содержит массив экземпляров 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>