باستخدام OpenMap API ما الفئة التي أستخدمها لاستخراج بيانات النقطة من FormFile؟

StackOverflow https://stackoverflow.com/questions/3737861

سؤال

أنا أستخدم حاليًا فئة Formfile و ColdFusion لأمر "السجلات" لكل شكل من الأشكال. يحتوي كل سجل على صندوق محيط ، وأنا قادر على الحصول على هذه المعلومات ، لكن لم يجد طريقة لاسترداد النقاط الموجودة في كل سجل.

هل يمكن لأحد أن يلقي بعض الضوء على الفصول التي يجب استخدامها وكيفية استخدامها؟

هذا هو نفس الموقف بالضبط (بما في ذلك بعض البكر) على النحو التالي:

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()#"> 
هل كانت مفيدة؟

المحلول

لم أستخدم هذا مطلقًا ، أو قمت بأي نظم لمعلومات ، ولكن بعد النظر إلى واجهة برمجة التطبيقات ، إليك اقتراحي.

لذا ، بعد أن يكون لديك شكل من الأشكال ، ستقوم:

myESRIRecord = shapeFile.getNextRecord();

هذا يجعلك esrirecord فئة أو واحدة من فئاتها الفرعية ، اعتمادًا على نوع الشكل.

The Formfile الذي عابث منه لمعرفة هذا هو:

http://russnelson.com/india.zip

ويحتوي فقط على مضلع الأنواع.

يحتوي esripolygonrecord على خاصية تسمى "المضلعات" التي تحتوي على مجموعة من مثيلات com.bbn.openmap.layer.shape.esripoly $ esrifloatpoly.

المفتاح مع هذه المكتبة ، على ما يبدو ، هو أن الكثير من البيانات في خصائص ، لا يمكن الوصول إليها من خلال الأساليب.

لذلك ، كما قلت ، لدى Esripolygonrecords بياناتها في خاصية المضلعات ، فإن 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>
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top