سؤال

لديّ محور جغرافي (طوري وطول) لبعض المدن وأرغب في الحصول على إحداثيات X و Y حتى تتمكن من رسمها في الخريطة.

الخريطة واحدة ، مثلها مثل http://www.wordtravels.com/images/map/spain/fuerteventura_map.jpg فمثلا.

لقد جربت العديد من الصياغة التي وجدتها ، لكن لا شيء يبدو أنه يعمل حقًا :(. سيكون رمز JavaScript البسيط أو روبي أفضل :)

هل كانت مفيدة؟

المحلول

بالإضافة إلى الإجابات المذكورة أعلاه ، هناك مكتبة Proj4JS مفتوحة المصدر والتي تقوم بتحويلات بين توقعات الخريطة المختلفة. يتم استخدامه داخليًا من قِبل OpenLayers لهذا النوع من الأشياء ، ويدعم عددًا من التوقعات والأنظمة الإحداثي الشائعة.

نصائح أخرى

هناك العديد من الطرق للتعامل مع هذه المشكلة بدرجات متفاوتة من الدقة. ومع ذلك ، فإنهم جميعًا يتلخصون في أداء إسقاط يتوافق مع خريطتك.

إذا كنت تعلم أن خريطتك هي من مجموعة إسقاط Mercator ، فيمكن معاملة الإحداثيات Lat/Long ببساطة على أنها x/y ، وتقياسها وترجمتها بشكل مناسب. وهذا هو ، ستجد AX+B و Cy+D يقوم بالمهمة.

إذا لم تكن خريطتك مركبة مركبة (حيث إنها على الأرجح لا إذا كانت تحاول أن تتساقط المقياس ، كما يبدو أن هذا السلطات) ، فإن أفضل رهان لك هو افتراض أنه إسقاط "أراضي". (هذا يعمل بشكل جيد بالنسبة للكتلة الأرضية الصغيرة.) في هذه الحالة ، تحتاج إلى عرض أولاً على نظام الإحداثيات ثلاثي الأبعاد.

z=sin(lat)
x=cos(lat)*sin(long)
y=cos(lat)*cos(long)

Z إيجابية تشير إلى القطب الشمالي. تشير Y إيجابية إلى 0 و 0 و X الإيجابي إلى LAT 0 Long 90 (الشرق) والإيجابية LAT/LONG شمالًا وشرقًا. بالطبع يجب أن تتحول إلى راديان أولاً.

كل هذا يفترض أرضًا كروية ، وهذا ليس صحيحًا تمامًا ولكنه قريب بما فيه الكفاية ما لم تكن تطلق جولات هاون طويلة المدى.

على أي حال ، بمجرد حصولك على XYZ ، ستحتاج إلى التدوير والتوسيع للخريطة. للتدوير حول محور Z ، فقط قم بطرح خط الطول الأساسي قبل أن تقوم بإجراء ثلاثة أبعاد. افعل ذلك لتركز خريطتك على نسبة صفر لأسهل الرياضيات.

بمجرد الانتهاء من ذلك ، ستحتاج فقط إلى تدوير العالم للأمام حتى تصبح خريطتك الأصلية مقدمة. افعل ذلك مع دوران ثنائي الأبعاد في محور YZ. يستخدم http://en.wikipedia.org/wiki/Coordinate_Rotations_and_reflections لمعرفة هذا الجزء.

أخيرًا ، ستصطف إحداثيات X و Z الخاصة بك بشكل جيد مع إحداثيات خريطة X ، Y ، للحصول على مقياس/ترجمة مناسب كما هو موضح سابقًا.

ربما سيساعد هذا ، لقد قمت بتنفيذ الولايات المتحدة باستخدام JavaScript فقط.

العرض التوضيحي/الكود: http://the55.net/_11/sketch/us_map

استخدم واجهة برمجة تطبيقات خرائط Google ، يمكنك تراكب JPG على الخريطة ووضعها بشكل صحيح.

هنا مثالhttp://code.google.com/apis/maps/documentation/javaScript/examples/overlay-hideshow.html

وهنا صفحة API حول التراكباتhttp://code.google.com/apis/maps/documentation/javaScript/overlays.html

لن تجد الأمر سهلاً إلا إذا كنت تعمل على نطاق صغير جدًا (وقريب من خط الاستواء). ويكيبيديا نظام الإحداثيات الجغرافية هي بداية جيدة ...

يمكن أن يكون المسار الأسهل للاستفادة من شيء مثل رسم خرائط الويب والتمسك مع خطوط العرض والطول.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top