বিমানের মানচিত্রের ব্যাপ্তি


10

আমি একটি (ওয়েব) মানচিত্র তৈরি করতে চাই যা কিছু বিমানবন্দরগুলির চারদিকে বিমানের পরিসর দেখায়।

আমি বিমানের পরিসীমা সহ একটি বাফার গণনা করার চেষ্টা করেছি। আপনি এখানে ফলাফল দেখতে পারেন ।

তবে এখন আমি বুঝতে পেরেছি যে ফলাফলটি ভুল কারণ বিমানগুলি সোজা পথ নেয় না তবে একটি বক্ররেখা উড়ে যায় কারণ এর সংক্ষিপ্ত।

সংক্ষিপ্ত বক্ররেখার সাথে পরিসীমা গণনা করার কোনও উপায় আছে কি?

উত্তর:


20

গ্রেট-সার্কেল দূরত্ব ব্যবহার করে আপনি একটি বৃত্ত বর্ণনা করতে proj4 লাইব্রেরি ব্যবহার করতে পারেন ।

উদাহরণস্বরূপ, এডিনবার্গ, টোকিও, কেপটাউন এবং কুইটো থেকে wgs84 / ইকুয়েটারটাইঙ্গুলারে 3000 কিলোমিটার ব্যাসার্ধ। নিরক্ষীয় অঞ্চলের সান্নিধ্যের কারণে কেবল কুইটো অস্পষ্টভাবে 'বৃত্তাকার' is আমি ৩ 36 ডিগ্রি (প্রায় NE) এর একটি একক ঘন স্পিক লাইনে যুক্ত করেছি

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

যদি আমরা এডিনবার্গকে কেন্দ্র করে একটি আজিমুথাল ইক্যুইডিস্টিটিভ প্রজেক্টে পরিবর্তন করি, আপনি এডিনবার্গের চারদিকে ব্যাসার্ধটিকে একটি বৃত্তে পরিণত করতে দেখবেন ...

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

মার্কেটরে (আপনার ওয়েব অ্যাপের মতো), আপনি নিরক্ষীয় অঞ্চল থেকে দূরে সরে যাওয়ার সাথে সাথে আপনি আরও বিকৃতি দেখেন, তবে বাফারগুলি আরও উপবৃত্তাকার হয়।

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

নিম্নলিখিত পাইথন কোড আছে যে (প্রয়োজন pyproj এবং সুষম )

import pyproj
from shapely.geometry import Polygon, MultiPoint, LineString
import math

def geodesicpointbuffer(longitude, latitude,
                        segments, distance_m,
                        geom_type=MultiPoint):
    """
    Creates a buffer in meters around a point given as long, lat in WGS84
    Uses the geodesic, so should be more accurate over larger distances

    :param longitude: center point longitude
    :param latitude: center point latitude
    :param segments: segments to approximate (more = smoother)
    :param distance_m: distance in meters
    :param geom_type: shapely type (e.g. Multipoint, Linestring, Polygon)
    :return: tuple (proj4 string, WKT of buffer geometry)
    """
    geodesic = pyproj.Geod(ellps='WGS84')
    coords = []
    for i in range(0, segments):
        angle = (360.0 / segments) * float(i)
        x1, y1, z1 = geodesic.fwd(lons=longitude,
                                  lats=latitude,
                                  az=angle,
                                  dist=distance_m,
                                  radians=False)
        coords.append((x1, y1))
        # makes a great circle for one spoke.
        if i==200:
            example = geodesic.npts(longitude,latitude,x1,y1,1000)
            coords2 = []
            for xx,yy in example:
                coords2.append((xx,yy))
            coords2.append((x1,y1)) # make sure we include endpoint ;-)
            flight = LineString(coords2)
            print(flight.wkt)

    ring = geom_type(coords)
    return "+init=EPSG:4326", ring.wkt


def main():
    # example : Cape Town. 3000km buffer.
    spec, wkt = geodesicpointbuffer(18.4637082653, -33.8496404007, 2000, 3000000.0, Polygon)
    print(spec)
    print(wkt)

if __name__ == "__main__":
    main()

আপনি দরকারী কুইকডব্লিউটিটি প্লাগইন ব্যবহার করে ডাব্লুকেটি আউটপুট কিউজিআইএস এ পেস্ট করতে পারেন ।

আপনি অন্যান্য পদ্ধতিগুলি ব্যবহার করতে পারেন - যেমন কনিপাইলন উল্লিখিত হয়েছে, আপনি আপনার প্রারম্ভিক বিন্দুটিকে কেন্দ্র করে মিটারগুলিতে একটি কাস্টম সামঞ্জস্যপূর্ণ প্রক্ষেপণের উপর একটি বৃত্ত তৈরি করতে পারেন। আমি দেখতে পেলাম যে বড় দূরত্বের জন্য একটি ত্রুটিটি কমছে (2000 কিলোমিটারের কয়েক কিলোমিটারের মধ্যে, তবে আন্তঃমহাদেশীয় দূরত্বগুলির জন্য এই ত্রুটিগুলি বাড়তে পারে)

মেমরি থেকে, মিমি কিগ্রিজ প্লাগইনটি কি.মি. যদিও এটি কোন পদ্ধতিটি ব্যবহার করে তা আমি নিশ্চিত নই।

নোট করুন যে আপনার কিউআইজিআইএসে বহুভুজ রেন্ডারিংয়ের সমস্যা হতে পারে যা আপনি এশিয়া থেকে শুরু করে যদি অ্যান্টিমিডারডিয়ান অতিক্রম করে থাকেন - -রেপডেটলাইন বিকল্পের সাথে ogr2ogr এখানে সহায়তা করতে পারে। আপনি ওপেনলেয়ার / লিফলেট নিয়ে সমস্যাটি কম দেখতে পাচ্ছেন, আইআইআরসি তারা দ্রাঘিমাংশকে 180 এর চেয়ে বেশি এবং -180 এর চেয়ে কম মঞ্জুরি দেয়।

এসিরি ব্লগে জিওডেসিক বাফারিং সম্পর্কে একটি ভাল লেখার ব্যবস্থা রয়েছে ।


8

আপনার দূরত্বের তথ্য কোথা থেকে আসছে তার উপর নির্ভর করে, এটি কোনও ব্যাপার নয়। যদি আপনার কাছে দূরত্ব দেওয়ার একটি সহজ সংখ্যা থাকে তবে দূরত্বটি কোনও মানচিত্রের প্রক্ষেপণের ক্ষেত্রে একই হবে যা দূরত্ব যথাযথভাবে দেখায় (মার্কেটর নয়, মনে হয় কোনও "সামঞ্জস্যপূর্ণ" অভিক্ষেপ যেমন অ্যাজিমুথাল অর্থোোগ্রাফিক প্রক্ষেপণ বা অনুরূপ A যেমন ল্যামবার্ট কনফর্মাল কনিক দূরত্বে যথাযথভাবে ঠিক কাজ করবে)) যদি আপনি একটি সমানুপাতিক অভিক্ষেপে বাফারগুলি গণনা করে তৈরি করেন তবে সেগুলি (মোটামুটি) সঠিক হবে, দূরত্ব কীভাবে গণনা করা হয় তা এখানে দেখুন: আর্কজিআইএস সহায়তা

লেয়ারের সমন্বয় ব্যবস্থাটি কেবলমাত্র ডেটা ফ্রেম নয়, একটি সামঞ্জস্যপূর্ণ প্রক্ষেপণে সেট করার বিষয়টি নিশ্চিত করুন।

একবার গণনা করা হলে, ওয়েব মার্কেটারে বা অন্য যে কোনও ওয়েব প্রোজেকশন আপনি ব্যবহার করতে চান তার মধ্যে রাখলে বাফার সেই অনুযায়ী সূচিত হবে।

লাইনগুলি কেন নিজেরাই বাঁকা এবং কেন এটি সমস্যা তৈরি করতে পারে:

মূল সমস্যাটি হ'ল একটি মার্কেটর প্রক্ষেপণের সমতলে বিমানের রুটগুলি বাঁকানো হিসাবে প্রদর্শিত হয়, যেমন:

এয়ার কানাডা রুটের মানচিত্র

এটি মার্কেটর মানচিত্রের ক্ষেত্রে একটি মৌলিক সমস্যা, কারণ এগুলি নটিকাল নেভিগেশনের উদ্দেশ্যে করা হয়েছে, যেখানে এই অনুমানগুলির উপর সরল রেখার বৈশিষ্ট্যগুলি মূল্যবান (একটি মার্কেটর প্রক্ষেপণের উপর একটি সরল রেখাটি একটি রম্ব লাইন; একই কমপাসের মধ্য দিয়ে একই লাইনটি শিরোনাম হয়) পুরো যাত্রা)।

যাইহোক, প্লেনগুলি রাম্ব লাইনগুলিতে উড়বে না, কারণ জ্বালানী দক্ষতা সাধারণ নেভিগেশনের চেয়ে বেশি গুরুত্বপূর্ণ, এবং এইভাবে গ্রেট সার্কেল বরাবর উড়ে যায়, যা একটি মার্কেটর অভিক্ষেপে বাঁক হিসাবে প্রদর্শিত হয়।


জ্বালানী দক্ষতা এবং যত তাড়াতাড়ি সম্ভব গন্তব্যে পৌঁছানো
সিএফকে

... যে কারণে আসল পথটি জেট স্ট্রিমটিকে বিবেচনায় নেবে।
ভিন্স

2
গল-পিটারগুলি সমান-অঞ্চল প্রজেকশন সমান নয়। সমতুল্যর জন্য আপনি আপনার উত্সকে কেন্দ্র করে একটি আজিমুথাল অর্থোোগ্রাফিক প্রোজেকশন এর মতো কিছু চান।
হাইক্কি ওয়েসেন্টো

হ্যাঁ, আমি ভাবছিলাম না। কনফরমাল প্রজেকশনটি দূরত্ব
রক্ষায়ও
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.