কীভাবে একটি [লাইন | মাল্টলাইন] STRING থেকে POINT নিষ্কাশন করা যায়


10

আমি একটি ডিবিতে QGISএকটি LINESTRINGবা MULTILINESTRINGসঞ্চিত সমস্ত পয়েন্টগুলি প্রদর্শন করতে ভেক্টর লায়ার তৈরি করতে চাই PostGIS

আমি মনে করি যে আমার LINESTRING(বা MULTILINESTRING) সমস্ত পয়েন্টকে রূপান্তর করতে হবে POINT

প্রথম প্রশ্ন :

এটি করার কোনও PostGISকাজ আছে?

দ্বিতীয় প্রশ্ন :

আমি যদি ফলাফল POINTটেবিল থেকে সদৃশ পয়েন্টগুলি বাদ দিতে চাই তবে আমি কীভাবে এটি করতে পারি?


সবাইকে ধন্যবাদ. আপনার সমস্ত উত্তর আমাকে অনেক সাহায্য করেছে। কোনটি সঠিক হিসাবে চিহ্নিত করা উচিত তা সিদ্ধান্ত নিতে আমাকে কিছুটা ভাবতে হবে :)
হাইজেনবগ

উত্তর:


7

অর্ডার পয়েন্ট পেতে এবং মূল জ্যামিতি ব্যবহারের সাথে লিঙ্ক করতে

SELECT (ST_DumpPoints(the_geom)).path as path, id, (ST_DumpPoints(the_geom)).geom FROM linestrings)

এবং http://wiki.postgresql.org/wiki/Deleting_ নকল থেকে প্রজাতন্ত্রকে সরান

মনে রাখবেন যে আপনার কাছে একটি প্রজাতন্ত্র অপসারণের জন্য একটি অনন্য আইডি থাকা দরকার, যদি আপনার কাছে এটি তৈরি করার প্রয়োজন না থাকে


হাই একটি টাইপো আছে, আপনি শেষ বন্ধনী অপসারণ করা উচিত। ডান সিনট্যাক্সটি হওয়া উচিতSELECT (ST_DumpPoints(the_geom)).path as path, id, (ST_DumpPoints(the_geom)).geom FROM linestrings
অ্যাবরোরাস

5

প্রথম প্রশ্নটি যতটা উদাসীন , কেবলমাত্র তার জন্য একটি পোস্টজিআইএস ফাংশন রয়েছে এস এস ডাম্পপয়েন্টস

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

SELECT (dp).geom FROM (
  SELECT ST_DumpPoints(geom) AS dp
    FROM linestrings
)

2

বিজ্ঞাপন 1।

CREATE TABLE points AS
SELECT ST_PointFromWKB(ST_AsEWKB(linestring_geom)) AS point_geom FROM linestring_table;

বিজ্ঞাপন 2. সদৃশ পয়েন্ট পোস্টজিআইএস নির্বাচন করুন

CREATE TEMPORARY TABLE temp AS 
SELECT *
FROM points AS a, points AS b
WHERE ST_Equals(a.geom, b.geom) AND a.id <> b.id;

DROP FROM points USING temp WHERE points.id=temp.id;

এই কাজ করে না, এটা প্রতিটি সারির প্রক্রিয়াজাত জন্য খালি জ্যামিতি এবং পোস্টগ্রি বিষয় সতর্কবার্তা উৎপন্ন: OGC WKB expected, EWKB provided - use GeometryFromEWKB() for this। আপনি কেবল ST_AsEWKB()পুরোপুরি এড়িয়ে যেতে পারেন , তবে এটি এখনও কোনও বোধগম্য হবে না, ST_PointFromWKB
কেপ্রিস্ট

ইনপুট বাইটিয়া যদি কোনও পয়েন্ট জ্যামিতির প্রতিনিধিত্ব না করে তবে NULL ফিরিয়ে দেওয়া হবে।
ভ্লাদিমির

2

শুধুমাত্র অনন্য পয়েন্ট ডাম্প করার জন্য, আপনি একটি SELECT DISTINCT ONঅভিব্যক্তি সহ কয়েকটি উপকৌশল ব্যবহার করতে পারেন :

SELECT geom, gid, path
FROM (
  SELECT DISTINCT ON (geom) geom, path, gid
  FROM (
    SELECT (ST_DumpPoints(the_geom)).geom, (ST_DumpPoints(the_geom)).path, gid
    FROM my_linestrings_table
  ) f
  ORDER BY geom, path, gid
) f
ORDER BY gid, path;
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.