পোস্টজিআইএসে জিএমএল পৃষ্ঠ সংরক্ষণ করা


9

আমি পোস্টজিআইএস ২.০.০ ব্যবহার করছি এবং একটি জিএমএল সারফেস এমনভাবে সঞ্চয় করতে চাই যা সেই পৃষ্ঠ এবং বিভিন্ন পয়েন্ট এবং রেখার মধ্যে ছেদ করার গণনার অনুমতি দেয়। আমার ক্ষেত্রে, সারফেসটিতে একটি পলিগনপ্যাচ থাকবে যার কোনও অভ্যন্তরীণ রিং থাকবে না এবং একটি বাহ্যিক রিং থাকবে যা লাইনস্ট্রিংসেকশন, জিয়োডেসিক, একটি আর্ক বা একটি বৃত্ত হতে পারে। দূরত্ব দশ মঞ্চ থেকে কয়েক শ মাইলের ক্রম হতে পারে। আমি দেখতে PostGIS আছে CIRCULARSTRINGএবং CURVEPOLYGONযা ব্যতীত যে তারা সমর্থন করে না করছি, একটি আর্ক জমা করার একটি ভালো উপায় হবে বলে মনে হচ্ছে geography, শুধুমাত্র টাইপ geometry। এটি সঞ্চয় করার সর্বোত্তম উপায় কী হবে? (আমি পোস্টজিআইএস এবং জিআইএস-এ সাধারণভাবে বেশ নতুন, সুতরাং এটি সম্পূর্ণ সম্ভব যে আমি স্পষ্টত কিছু মিস করছি।)


আপনি যেমনটি পোস্টগিসে জিএমএল সংরক্ষণ করতে পারেন। postgis.refferences.net/docamentation/manual-svn/…
ম্যাপের্জ

উত্তর:


4

ST_GeomFromGML

আপনি আপনার জেএমএল বৈশিষ্ট্যগুলি একটি পোস্টজিআইএস জ্যামিতি ডেটাটাইপ হিসাবে সংরক্ষণ করতে পারেন ST_GeomFromGML ফাংশনটি ব্যবহার করে যা আপনার জিএমএলকে জ্যামিতি ডেটাটাইপে রূপান্তর করবে। এফওয়াইআই: কেএমএল, ডাব্লুকেটি এবং আরও কিছু ক্ষেত্রে একই রকম কাজ রয়েছে।

ঠিক যেমন কিছু করুন:

INSERT into myTable (mygeomField) values (ST_GeomFromGML('
    <gml:LineString srsName="EPSG:4269">
        <gml:coordinates>
            -71.16028,42.258729 -71.160837,42.259112 -71.161143,42.25932
        </gml:coordinates>
    </gml:LineString>'));

জ্যামিতি ক্ষেত্রে এটি একবার হয়ে গেলে আপনি PostGIS এ করতে চান এমন সমস্ত মজাদার ছেদগুলি এবং স্টাফগুলি করতে পারেন

তারপরে আপনি নিজের ফলাফলটি এসএমএএসজিএমএল ব্যবহার করে জিএমএল ফর্ম্যাটে ফিরিয়ে দিতে পারেন

সম্পাদনা # 1 আমি বিশ্বাস করি আপনি খুঁজছেন:

http://postgis.net/docs/ST_Distance_Sphere.html

http://postgis.net/docs/ST_Distance_Spheroid.html

সম্পাদনা # 2

আমি "POSTGIS =" 1.5.2 "(আপনার চেয়ে পুরানো সংস্করণ) ব্যবহার করছি এবং নিম্নলিখিত বিবৃতিটি ঠিক কাজ করে:

select ST_GeomFromText('CIRCULARSTRING(220268 150415,220227 150505,220227 150406)')

আপনার যা প্রয়োজন তা পেতে আপনাকে ফাংশনের সংমিশ্রণ ব্যবহার করতে হবে।

দূরত্বে_ফেরয়েড সিরকুলারস্টিং সমর্থন করে না কারণ এটি জ্যামিতির ডেটা ধরণের ক্ষেত্রে নেয়।

একটি যোগ করুন সম্পাদনা নমুনা GML আপনার সাথে সমস্যা হচ্ছে কিনা এবং আমি তোমার জন্য বিবৃতি লিখে রাখবে এক টুকরা সঙ্গে আপনার মূল প্রশ্ন।


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

@ ইএম: আমার সম্পাদনা # 1 টি পরীক্ষা করুন
ক্যাপ্টড্রাগন

ধন্যবাদ, এগুলি চেষ্টা করে দেখুন, তবে দুর্ভাগ্যক্রমে তারা চক্রটিকে সমর্থন করে না।
EM0

@ ইএম: আমার সম্পাদনা # 2 পরীক্ষা করুন
ক্যাপ্ট্রাড্রাগন

হ্যাঁ, একটি চক্কর তৈরি করার বিবৃতি কাজ করে, তবে সেই স্ট্রিংয়ের দূরত্ব গণনাগুলি একটি বিমান ব্যবহার করে, যেমনটা আমি বুঝতে পারি, কারণ এটি "জ্যামিতি" টাইপের। যাইহোক, আমি ডেটা দুটি উপায়ে সংরক্ষণের চেষ্টা করতে যাচ্ছি - সিরকুলারস্টিং (জ্যামিতি) হিসাবে সঠিক মান এবং এস-কর্কটওলাইন ব্যবহার করে উত্পন্ন আনুমানিক মান (ভূগোল)।
EM0

2

শেষ পর্যন্ত আমি "নির্ভুল" চাপ বা বৃত্তটি সঞ্চয় করে ছেড়ে দিয়েছি। একটি জিএমএল আর্ক আমদানি করার সময় (যা চাপের উপরে 3 পয়েন্ট দ্বারা সংজ্ঞায়িত) আমি অস্থায়ীভাবে একটি জ্যামিতি তৈরি করি CIRCULARSTRING, তারপরে এটিকে ভূগোলে রূপান্তরিত করব:

ST_RemoveRepeatedPoints(ST_CurveToLine(ST_GeomFromText('CIRCULARSTRING(...)', 4326)))::geography

একটি জিএমএল আরকবিসেন্টারপয়েন্টটি আমদানি করার সময় (যা কেন্দ্র বিন্দু, ব্যাসার্ধ এবং সূচনা এবং শেষ কোণগুলি দ্বারা সংজ্ঞায়িত করা হয়) আমি সূচনা কোণ থেকে শেষ কোণে 1 ডিগ্রি বিরতিতে পয়েন্টগুলি প্রজেক্টের মাধ্যমে সরাসরি এটি অনুমান করি। এটি একটি গোলকের উপর করা হয়, গোলক নয়, তাই এটি সম্পূর্ণ সঠিক নয়, তবে ভূগোলের ধরণের জন্য অ্যাজিমুথ এবং পয়েন্ট প্রজেকশন বাস্তবায়নের জন্য পোস্টজিআইএস টিকিট রয়েছে । একটি বৃত্তের জন্য একই।

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