كيف أرسم النقاط في خط polyline ESRI ، بالنظر إلى المربع المحيط بأنه LAT/Long و "النقاط" كراديان؟
سؤال
أنا أستخدم OpenMap وأنا أقرأ شكلًا باستخدام com.bbn.openmap.layer.shape.shapefile. تتم قراءة المربع المحيط في نقاط LAT/طويلة ، على سبيل المثال 39.583642 ، -104.895486. المربع المحيط هو نقطة أقل اليسار ونقطة يمين العلوي التي تمثل المكان الذي توجد فيه النقاط. The "points," which are named "radians" in OpenMap, are in a different format, which looks like this: [0.69086486, -1.8307719, 0.6908546, -1.8307716, 0.6908518, -1.8307717, 0.69085056, -1.8307722, 0.69084936, -1.8307728 ، 0.6908477 ، -1.8307738 ، 0.69084626 ، -1.8307749 ، 0.69084185 ، -1.8307792].
كيف يمكنني تحويل نقاط مثل "0.69086486 ، -1.8307719" إلى إحداثيات X ، Y التي يمكن استخدامها في الرسومات العادية؟
أعتقد أن كل ما هو مطلوب هنا هو نوع من التحويل ، لأن إدخال النقاط في Excel وترسمها يخلق خطًا يتطابق منحنى منحنى الطريق في الموقع المحدد (LAT/Long). ومع ذلك ، يجب تعديل المحاور يدويًا وليس لدي أي إشارة إلى كيفية ضبط الفؤوس ، حيث يبدو أن المربع المحيط المحدد في تنسيق مختلف عن النقاط المحددة.
لا يبدو أن الوصف الفني لـ ESRI ShapeFile يذكر هذا (http://www.esri.com/library/whitepapers/pdfs/shapefile.pdf).
المحلول
0.69086486, -1.8307719
هو خط العرض وخط الطول في الراديان.
أولاً ، قم بتحويلها إلى درجات (اضرب (180/PI)) ، ثم سيكون لديك وحدات مشتركة بين المربع المحيط والإحداثيات الخاصة بك.
ثم يمكنك رسم كل ذلك في إطار محلي مع ما يلي:
x = (longitude-longitude0)*(6378137*pi/180)*cos(latitude0*pi/180)
y = (latitude-latitude0)*(6378137*pi/180)
(Latitude0 ، loncitude0) هي إحداثيات نقطة مرجعية (على سبيل المثال الزاوية السفلية اليسرى من المربع المحيط) درجات للزوايا و متر للمسافات
تحرير-شرح: هذا إسقاط إملائي للأرض يعتبر كرة نصف قطرها هو 6378137.0 م (محور شبه ماجور من الإهليلجيات WGS84) ، تتمحور على النقطة (LAT0 ، LON0)
نصائح أخرى
في OpenMap ، هناك عدد من الطرق للتحويل من الراديان إلى درجات عشرية:
Length.DECIMAL_DEGREE.fromRadians(radVal);
Math.toDegrees(radVal) // Standard java library
للحصول على صفيف ، يمكنك استخدام projmath.arraygtorad (double [] radvals) ؛
كن حذرًا مع ذلك الأخير ، فهو يقوم بالتحويل في مكانه. لذا ، إذا أمسك بصفيف Lat/Lon من Ompoly ، فقم بنسخه أولاً قبل تحويله. خلاف ذلك ، سوف تعبث الإحداثيات الداخلية لـ Ompoly ، والتي تتوقع أن تكون في Radians.