ওয়েব মার্কেরেটর মানচিত্রে দুর্দান্ত দেখতে কোনটি বড় চেনাশোনা তৈরি করা হচ্ছে?


11

আমি কয়েকটি ফ্লাইট নির্দেশ করে ডেটা সহ একটি মানচিত্র তৈরির চেষ্টা করছি এবং উত্স এবং গন্তব্যগুলি সংযোগ করতে গ্রেট সার্কেল আরকস ব্যবহার করতে চাই।

মূলত, আমি বিখ্যাত ফেসবুক মানচিত্রের মতো কিছু করতে চাই: এখানে চিত্র বর্ণনা লিখুন

আমি এই পোস্টে প্রদত্ত ফাংশনগুলি ব্যবহার করেছি: https://gis.stackexchange.com/a/5205/442 , (অর্থাত্ এই ব্লগ নিবন্ধ: http://anitagraser.com/2011/08/20/visualizing-global-connitions / ) এবং আমি লাইন পেতে পারি, তবে তারা মেরুতে আন্তর্জাতিক তারিখের লাইনটি অতিক্রম করে, পাশাপাশি গুচ্ছো:

এখানে চিত্র বর্ণনা লিখুন

@ আন্ডারডার্ক, লিঙ্কযুক্ত ব্লগপোস্টে উল্লেখ করেছেন যে এই লাইনগুলি বিভক্ত করা দরকার, তবে কীভাবে পোস্টজিআইএস এ সেগুলি স্বয়ংক্রিয়ভাবে বিভক্ত করা যায় তা আমি জানি না।

অতিরিক্তভাবে খুঁটির কাছাকাছি রেখাগুলির গুচ্ছটিও সমাধান করা দরকার।

আমি যখন এই উড়ানগুলির শুরু এবং শেষের জন্য পয়েন্ট লোকেশন পাই তখন আমি কীভাবে এই দুটি করব?


আপনি একটি মেরু প্রক্ষেপণ ব্যবহার করতে পারেন?
ইয়ান টার্টন

2
আমি এখানে কিছু উদাহরণ দিয়েছি : gis.stackexchange.com/questions/133026/… । নোট করুন যে eqdc সত্যিকারের দুর্দান্ত চেনাশোনাগুলি সরবরাহ করে না, তবে aeqd করে।
আন্দ্রেজে

উত্তর:


5

এই ব্লগ পোস্টের নীতিগুলি সাধারণ উদ্দেশ্যে PostGIS এ স্থানান্তর করে।

http://blog.cartodb.com/jets-and-datelines/

মূলত, ST_Segmentizeভূগোলের উপর ব্যবহার করুন এবং তারিখ-রেখাটি ক্রসিং লাইনগুলি কেটে ফেলার জন্য কিছুটা যাদু।


8

আপনি জিওডেসিকগুলি গণনা করতে পারেন। আপনি A থেকে B তে ভূ-তাত্পর্যটি দেখানোর কথা বলছেন, আপনি প্রথমে A থেকে B (বিপরীত জিওডেসিক সমস্যা) এবং দূরত্বে এবং A এবং B (সরাসরি জিওডেসিক সমস্যা) এর মধ্যে কয়েকটি বিন্দুতে পয়েন্ট গণনা করতে পারেন az আমি জিওজিএসনে স্টাফ আউটপুট করে জিওগ্রাফিকলিব ব্যবহার করে পাইথনে একটি সাধারণ স্ক্রিপ্ট যুক্ত করেছি :

from geographiclib.geodesic import Geodesic
from geojson import MultiLineString

def geodesic(lat1, lon1, lat2, lon2, steps):
    inverse = Geodesic.WGS84.Inverse(lat1, lon1, lat2, lon2)
    linestrings = []
    coordinates = []

    for i in range(0, steps + 1):
        direct = Geodesic.WGS84.Direct(inverse['lat1'], inverse['lon1'], inverse['azi1'], (i / float(steps)) * inverse['s12'])
        if len(coordinates) > 0:
            if (coordinates[-1][0] < -90 and direct['lon2'] > 90) or (coordinates[-1][0] > 90 and direct['lon2'] < -90):
                linestrings.append(coordinates)
                coordinates = []
        coordinates.append((direct['lon2'], direct['lat2']))

    linestrings.append(coordinates)
    geojson = MultiLineString(linestrings)
    return geojson

linestrings = []

# San Francisco: 37.7793, -122.4192
# Bangalore: 12.9, 77.616667
for linestring in geodesic(37.7793, -122.4192, 12.95, 77.616667, 100)['coordinates']:
    linestrings.append(linestring)

# Boston: 42.357778, -71.059444
# Bangalore: 12.9, 77.616667
for linestring in geodesic(42.357778, -71.059444, 12.95, 77.616667, 100)['coordinates']:
    linestrings.append(linestring)

print(MultiLineString(linestrings))

ফলাফলটি ডাব্লুজিএস -৪৪ এর পয়েন্টগুলির মধ্যে সত্য জিওডেসিক। অবশ্যই, আপনি তারপরে আপনার যা যা প্রযোজন প্রয়োজন তা স্থানাঙ্কগুলিকে রূপান্তর করতে পারেন। জিওজসন.ইওতে দৃশ্যমান ফলাফলটি দেখতে এরকম দেখাচ্ছে:

এখানে চিত্র বর্ণনা লিখুন


2
দেখুন geographiclib.sourceforge.net/html/python/... একটি বিকল্প (এবং দ্রুত!) GeographicLib সঙ্গে এই কাজ করার উপায়। দ্রাঘিমাংশের ধারাবাহিকতা নিশ্চিত করতে LONG_UNROLL পতাকাটি ব্যবহৃত হয়েছে তাও নোট করুন।
সিএফকে
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.