দুটি পয়েন্ট থেকে শেপলি লাইন স্ট্রিং কীভাবে তৈরি করবেন


11

যদি দুটি পয়েন্ট থাকে, যা থেকে আমি একটি সরল LineStringঅবজেক্ট তৈরি করতে চাই :

from shapely.geometry import Point, LineString
A = Point(0,0)
B = Point(1,1)

জন্য সুষম ম্যানুয়ালLineString পদ বলে:

Pointউদাহরণগুলির একটি ক্রম বৈধ নির্মাণকারীর পরামিতি নয়। A LineStringপয়েন্ট দ্বারা বর্ণিত হয়, তবে পয়েন্ট উদাহরণগুলির দ্বারা গঠিত হয় না।

সুতরাং আমার যদি দুটি পয়েন্ট থাকে Aএবং আমার বর্তমান "সেরা" অনুমানের চেয়ে Bলাইন তৈরি করার আরও ছোট / ভাল / সহজ উপায় কি AB...

AB = LineString(tuple(A.coords) + tuple(B.coords))

... যা দেখতে জটিল দেখাচ্ছে। কোন সহজ উপায় আছে?

হালনাগাদ

আজকে প্রকাশিত আকারের ১.৩.২ এর সাথে ম্যানুয়াল থেকে উপরের বিবৃতিটি আর সঠিক নয়। তাই এখন থেকে,

AB = LineString([A, B])

কাজ !

উত্তর:


9

শেপলি ১.৩ থেকে আপনি পয়েন্টগুলি থেকে একটি লাইন স্ট্রিং তৈরি করতে পারেন:

>>> from shapely.geometry import Point, LineString
>>> LineString([Point(0, 0), Point(1, 1)]).wkt
'LINESTRING (0 0, 1 1)'

ম্যানুয়ালটিতে দ্বন্দ্বের জন্য ক্ষমা চাইছি।


দুটি মেশিনে (একটি লিনাক্স, একটি উইন্ডোজ) shapely.__version__শেপলি ১.৩.১ এ আপগ্রেড করার পরে ( সম্মত) এবং আপনার কোড ভারব্যাটিয়াম পেস্ট করার পরে , আমি [<...Point object at 0x..>, <...Point object at 0x...>]"লাইনস্ট্রিংয়ের জন্য ইনপুটটি ভুল আকার " সম্পর্কে লিনেস্ট্রিং.পিসি # 228 এর কাছ থেকে একটি ভ্যালুআরর পেয়েছি । আমি কিছু মিস করেছি?
ojdo

আপডেট: সংশ্লিষ্ট টান অনুরোধ # 102 কেবলমাত্র মাস্টারে রয়েছে, এখনও শাখা 1.3 এ একীভূত হয়নি এবং এটি বর্তমান 1.3.1 প্রকাশে উপস্থিত হয় না।
ojdo

তুমি ঠিক বলছো. আমি এখনই এটি github.com/Toblerity/Shapely/issues/130 এ ঠিক করেছি এবং পিপিআইতে 1.3.2 আপলোড করেছি ।
সজিলি

চেক করুন, এটি এখন কাজ করে; দ্রুত অনুসরণের জন্য ধন্যবাদ (আবার)!
ojdo

3

বেস পদ্ধতিটি হ'ল:

AB = LineString([(A.x,A.y), (B.x,B.y)])

স্থানাঙ্কের তালিকাগুলি একত্রিত করতে আপনি স্লাইসিং ব্যবহার করতে পারেন:

AB = LineString(A.coords[:] + B.coords[:])
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.