أكثر

استخدام مسافة Linestring بالأمتار مع GeoTools؟

استخدام مسافة Linestring بالأمتار مع GeoTools؟


أرغب في استخدام GeoTools للعمل مع بيانات نظم المعلومات الجغرافية. أنا مهتم جدًا بحسابات المسافة ، وليس كثيرًا بشأن رسم الخريطة. ما لم أستطع معرفته حتى الآن هو كيفية جعل حسابات المسافة تعمل بسلاسة على WGS84 كروي. كمثال ، أريد حساب المسافة (بالأمتار) بين حلقتين. سيكون كود postgresql

حدد ST_Distance (ST_GeomFromText ('LINESTRING (13.45 52.47،13.46 52.48)') :: الجغرافيا ، ST_GeomFromText ('LINESTRING (13.00 52.00،13.1 52.2)') :: الجغرافيا)

الإخراج هو 38364.138314182

مع الأدوات الجيولوجية أتخيل شيئًا مثل

import org.geotools.geometry.jts.JTSFactoryFinder import org.geotools.geometry.jts.WKTReader2، import org.geotools.factory.Hints، import org.geotools.referencing.crs.DefaultGeographicCRS Hints = New Hints (Hints.CRS، DefaultGeographicCRS.WGS84) GeometryFactory geometryFactory = JTSFactoryFinder.getGeometryFactory (hints) WKTReader2 reader = new WKTReader2 (geometryFactory) Geometry g1 = reader.read ('LINESTRING (' LINESTRING (13.45 52.47،13.46 52.48) '= 52.00،13.1 52.2) ') System.out.println (g1.distance (g2))

الآن الناتج هو 0.442040722106004 وهو نفس

حدد ST_Distance (ST_GeomFromText ('LINESTRING (13.45 52.47،13.46 52.48)') ، ST_GeomFromText ('LINESTRING (13.00 52.00،13.1 52.2)')

وهي المسافة الإقليدية بالدرجات. بالنسبة للنقاط ، يمكنني استخدام OrthodromicDistanceCalculator ولكن ليس للخطوط. بالإضافة إلى ذلك ، من غير الملائم تحديد أن حسابات المسافة يجب أن تستند إلى WGS84 مرارًا وتكرارًا.


باستخدام الكود التالي يمكنني الحصول على إجابة 38355.3256m (والتي ربما تكون قريبة بدرجة كافية) - أتخيل أنه مع اختيار أكثر دقة للنقطة المركزية ، يمكن الحصول على نتيجة أكثر "دقة".

Geometry g1 = reader.read ("LINESTRING (13.45 52.47،13.46 52.48)") ؛ Geometry g2 = reader.read ("LINESTRING (13.00 52.00،13.1 52.2)") ؛ System.out.println (g1.distance (g2)) ؛ CoordinateReferenceSystem auto = CRS.decode ("تلقائي: 42001،13.45،52.3") ؛ System.out.println (تلقائي) ؛ تحويل MathTransform = CRS.findMathTransform (DefaultGeographicCRS.WGS84 ، تلقائي) ؛ الهندسة g3 = JTS.transform (g1 ، تحويل) ؛ الهندسة g4 = تحويل JTS (g2 ، تحويل) ؛ System.out.println (g3.distance (g4)) ؛

شاهد الفيديو: استخراج الترقيم.المساحات و الأطوال في جداول منظمة مع خصائص مفيدة دورة تعليم YQArch على AutoCAD