Использование API OpenMap Какой класс я использую для извлечения данных точек из Sharpfile?
-
03-10-2019 - |
Вопрос
В настоящее время я использую класс Sharpfile и ColdFusion, чтобы пройти через «записи» каждой формы. Каждая запись имеет ограничительную коробку, и я могу получить эту информацию, но не нашел способ на самом деле на самом деле получить точки внутри каждой записи.
Может ли кто-нибудь пролить свет на какие классы использовать и как их использовать?
Это то же самое положение (включая некоторые из виновных) как:
http://old.nabilb.com/what-class-do-you-uase-to-extract-data-from-.shp-files-ttd20208204.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()#">
Решение
Я никогда не использовал это или не сделал ГИС, но, посмотрел на API, вот мое предложение.
Итак, после того, как у вас есть ваша форма, вы бы:
myESRIRecord = shapeFile.getNextRecord();
Это получает вам Esrirecord Класс или один из его подклассов, в зависимости от того, какой тип формы это.
WhereFile, с которым я запутался, чтобы понять это:
http://russnelson.com/india.zip.
И только содержит полигон Типы.
Esripolygonrecord содержит свойство под названием «многоугольники», которые содержат массив COM.BBN.OpenMap.layer.shape.esripoly $ Esriflypoly.
Кажется, ключевой ключ с этой библиотекой, так это то, что много данных находится в свойствах, не доступных методами.
Итак, как я уже сказал, 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>