ফ্রি জিআইএস সফ্টওয়্যারটিতে সিউডো নোডগুলি সন্ধান করছেন?


16

সফ্টওয়্যার জিভিএসআইজি ওএ ডিজিটাল সংস্করণ 2010 এর রৈখিক জ্যামিতিতে সিউডো নোডগুলি সন্ধানের জন্য সরঞ্জাম টপোলজি রয়েছে। 20000 লিঙ্ক গণনা লিনিয়ার জ্যামিতির জন্য আমি ক্লাস্টার টলারেন্স 0.00002 এবং সর্বাধিক সংখ্যক ত্রুটি -10000 সেট করেছি। তবে ব্যর্থ ফলাফল।

ফ্রি জিআইএস সফ্টওয়্যারটিতে সিউডো নোডগুলি খুঁজে পাওয়ার কোনও সমাধান রয়েছে?

আমাকে সিউডো নোডের স্তর তৈরি করতে হবে (এই সমস্যার একটি সমাধান - আরকিআইএনফো-এর সরঞ্জাম টোপোলজি ব্যবহার করা, তবে আমার পক্ষে অগ্রাধিকার হ'ল ফ্রি সফটওয়্যার ব্যবহার করা)। লিনিয়ার জ্যামিতি পোস্টজিআইএস (বনাম ২.০.১) ডাটাবেসে কিউজিআইএস ১.৮.০ এ বেশ কয়েকটি ব্যবহারকারী তৈরি করেছে।

নতুন চিত্র যুক্ত করুন: এ (লাইন 4/5), বি (লাইন 6/7), সি (লাইন 9-10) এ তিনটি সিডো নোড সহ 12 রৈখিক বৈশিষ্ট্য। সিউডো নোডগুলির পরিবর্তে পয়েন্ট হওয়া উচিত - একটি বিন্দুতে (নোড) ছেদযুক্ত দুটি লিনিয়ার বৈশিষ্ট্যগুলি একটি রৈখিক বৈশিষ্ট্য হওয়া উচিত (লাইন 4/5 - লাইন 4, ...)।

পোস্টজিআইএস-এ কোনও অনুরোধ করা কি সম্ভব, যার ফলে সিউডো নোডের স্তর তৈরি হবে?

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

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

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

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


2
গ্রাসে কমান্ড আরএমডাঙ্গেল বিদ্যমান, তবে সিউডো নোড ছাড়াই shp-file ফলস্বরূপ। ফলস্বরূপ সিউডো নোডের shp-file (বা অন্য কোনও) হওয়া উচিত (যেমন gvSIG OA ডিজিটাল সংস্করণ 2010)
হ্যাস্ট

আপনি কি PostGIS 2.0 ব্যবহার করেন? যদি হ্যাঁ হয় তবে ইস_ভালিড এবং মেকডিয়াল ফাংশনগুলিতে চেষ্টা করুন।
জিওভান্নি মাঙ্গি

হ্যাঁ, আমি পোস্টজিআইএস ২.০ ব্যবহার করি। সিউডো নোডগুলি অনুসন্ধান করার জন্য আমার এই ফাংশনগুলি কীভাবে ব্যবহার করা উচিত? "কিউজিআইএসির জন্য পিজি কিউয়ারি" দিয়ে তাদের খুঁজে পাওয়া সম্ভব?
হস্টটি

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

দ্বিতীয় চিত্রের লাল পয়েন্টটি দুটি বৈধ জ্যামিতির একটি ছেদ কেন? ঠিক?
বিনয়ন

উত্তর:


8

এখানে জেনেরিক সলিউশন, আপনি পোস্টজিআইএস বা অন্য কোনও ওজিসি-অনুগত সফ্টওয়্যার দিয়ে ইমপিমেমেন্ট করতে পারেন।

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


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

ওজিসি স্ট্যান্ডার্ডগুলি অফার করে:

  • ST_ সীমানা (জিম) : লাইনের নোডগুলি সনাক্ত করতে

  • ST_Dump (geom) : প্রতিটি একক নোডকে এসকিউএল টেবিল রেকর্ডে রাখার জন্য।

  • পরিবর্তন সহনশীলতার জন্য ST_DWithin, ST_Equals, ST_SnapToGrid, ST_Snap ব্যবহার করা যেতে পারে। আমি ST_DWithin ব্যবহার করছি।

আমরা ধরে নিতে পারি যে আপনার মূল সমস্যাটি এই বিষয়গুলি এবং বৈশিষ্ট্যগুলির সাথে নির্দিষ্ট করা যেতে পারে,

  • লাইনস্ট্রিং জ্যামিতির দ্বারা প্রতিনিধিত্ব করা কেবলমাত্র রেখাংশ (একটি টেবিলের লিনিগমেন্টের ) রয়েছে ... আমি বহুটির সাথে পরীক্ষা করিনি, যদি আপনার জ্যামিতি টাইপ = মাল্টিপোয়েন্ট থাকে তবে আপনি ST_Dump এবং ST_LineMerge দিয়ে মাল্টলাইনগুলিকে বিভক্ত এবং কাস্ট করতে পারেন;

  • প্রতিটি লাইনে সেগমেন্ট একটি (জ্যামিতি আইডি) আছে gid এবং (রঙ আইডি) idline

সুতরাং, প্রথম পদক্ষেপটি নোডগুলি পাওয়া যা লাইনগুলিতে যোগদান থেকে আসে,

CREATE TABLE cache_bounds AS
  SELECT gid as gid_seg, (ST_Dump(ST_Boundary(the_geom))).geom AS the_geom,
         gid as color 
         -- if you not have something for "color label" of lines, use gid.
  FROM linesegment;
ALTER TABLE cache_bounds ADD column gid serial PRIMARY KEY;

CREATE TABLE cache_joinnodes AS
  -- Use your TOLERANCE instead "1" at ST_DWithin and ST_Buffer.
  SELECT *, array_length(colors,1) as ncolors FROM (
   SELECT gid, array_distinct(array_cat(a_colors,b_colors)) as colors, the_geom FROM (
    SELECT 
      a.gid, array_agg(a.color) as a_colors, array_agg(b.color) as b_colors
      , st_buffer(a.the_geom,1) as the_geom -- any one to represent the join point.
    FROM cache_bounds a, cache_bounds b 
    WHERE a.gid>b.gid AND ST_DWithin(a.the_geom,b.the_geom,1)
    -- use ST_equals(a.the_geom,b.the_geom) if no tolerance.
    GROUP BY a.gid, a.the_geom
   ) as t
  ) as t2;

দ্রষ্টব্য: ক্যাশে ব্যবহার করা হচ্ছে কারণ তারা দেখার চেয়ে দ্রুত। সিপিইউ সময় যাচাই করতে "এক্সপ্লেইন নির্বাচন ..." ব্যবহার করুন, এটি একটি দীর্ঘ সময় নিতে পারে।

এখানে চক্র এবং অবিচ্ছিন্ন (একই বর্ণ) লাইনগুলি ncolors=1পয়েন্ট হিসাবে চিহ্নিত করা হয় এবং সিউডো নোডগুলি ncolors=2পয়েন্ট হিসাবে চিহ্নিত করা হয়, সুতরাং, আপনার সেই পয়েন্টগুলির সাথে একটি স্তর রয়েছে।

আপনার "ভাল নোডস" এর সারণীটি মূল "বাউন্ডিং পয়েন্টগুলি" এবং "সিউডো নোডগুলি" ছাড়াই।

CREATE VIEW vw_joinnodes_full AS
  SELECT b.*, j.ncolors
  FROM cache_joinnodes j INNER JOIN cache_bounds b 
       ON j.gid=b.gid;

CREATE TABLE cache_good_nodes AS
  SELECT *  
  FROM vw_joinnodes_full 
  WHERE ncolors=1 OR ncolors>2;

-- IF NEED ... CREATE VIEW vw_correct_linesegment AS ... 

সমাধানের জন্য আপনাকে ধন্যবাদ! আমি রানার ক্যোয়ারীটি চেষ্টা করি (পিজিএডমিনে) তবে আমি ব্যতিক্রম পেয়েছি: "ফাংশন অ্যারে_ডিস্টিনেক্ট (পূর্ণসংখ্যা []) বিদ্যমান নেই"। আমি কি ভুল করছি?
তাড়াতাড়ি

দুঃখিত, উদ্ধৃত array_distinctফাংশনটি কোনও পোস্টগ্রাস.কম লাইব্রেরি থেকে নেই । অন্য কোনও ত্রুটি, দয়া করে রিপোর্ট করুন, আমি এখানে আরও ব্যাখ্যা যুক্ত করতে পারি।
পিটার ক্রাউস

আমি অ্যারে_ডিস্টিন্ট ফাংশন যুক্ত করেছি। ডাটাবেসে রৈখিক স্তরের "the_geom" জ্যামিতি কলামের নাম (পরিবর্তে "জিওম" কোয়েরিতে থাকে) থাকে। রান ক্যোয়ারির পরে আমি "জিওম" কে "এস_বাউন্ডারি (দ্য_জুম)" এর জন্য "the_geom" এ প্রতিস্থাপন করি আমি "কলাম" জিওম "উপস্থিত নেই" রং ", জিওম এফআরওএম" স্থান হিসাবে বার্তা পেয়েছি receive আমি "রঙ হিসাবে রঙ, ভূত FROM" থেকে "রঙ হিসাবে, the_geom FROM" প্রতিস্থাপন করি তবে আমি আবার "কলাম" the_geom "উপস্থিত নেই" বার্তাটি পাই।
hasti

ঠিক আছে, পরিবর্তিত (সম্পাদিত উত্তর দেখুন) geomথেকে the_geom(এসT_ ডাম্প (এক্স)) ভূত হিসাবে থাকা, এটি কোনও ডাটাবেস বৈশিষ্ট্য নয়।
পিটার ক্রাউস

ধন্যবাদ! অনুসন্ধান কাজ করে। আমি ST_DWithin কে ST_equals এ প্রতিস্থাপন করেছি এবং ST_Buffer এর জন্য 0.00002 ডিডি সহনশীলতা দিন। ফলস্বরূপ আমি সঠিক নোড পেয়েছি (যেখানে একটি নোডে 3 এবং আরও লিনিয়ার বৈশিষ্ট্য ছেদ করে)। আমি ফলাফল পেতে চাই যেখানে একটি নোডে 2 লিনিয়ার বৈশিষ্ট্যগুলি ছেদ করে (FROM vw_joinnodes_ful WHERE Ncolors = 2;), তবে পয়েন্ট স্তরটি পাওয়া যায় যেখানে একটি নোডে 2 এবং আরও লিনিয়ার বৈশিষ্ট্যগুলি ছেদ করে। যেখানে কোনও নোডে মাত্র 2 লিনিয়ার বৈশিষ্ট্য ছেদ করে ফলাফল কীভাবে পাবেন?
has

7

রিফ্র্যাকশনস রিসার্চ একটি লাইন ক্লিনার সরঞ্জাম তৈরি করেছে যা দেখে মনে হয় আপনি যা করতে চান তা করে।

লাইন ক্লিনার জটিল, চক্রাকার, খুব সংক্ষিপ্ত এবং শূন্য দৈর্ঘ্যের জ্যামিতিগুলিকে সহজ করে এবং সিউডো-নোডগুলি এবং তুচ্ছ শৃঙ্খলা অপসারণ করে নেটওয়ার্কগুলি পরিষ্কার করে। সর্বাধিক উল্লেখযোগ্যভাবে, পরিষ্কারের পর্যায়ে, এটি নিশ্চিত করতে সক্ষম হয় যে বৈশিষ্ট্যের মিলগুলি স্বয়ংক্রিয়ভাবে বিবেচনা করা যেতে পারে

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

সোর্স কোড GitHub এ পাওয়া যাবে।


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

দেখে মনে হচ্ছে এটি কাজ করা উচিত। আপনি এখানে কী বলতে চাইছেন তা ঠিক বুঝতে সমস্যা হচ্ছে। "ত্রুটির ফলস্বরূপ সিউডো নোডের একটি পয়েন্ট স্তর দরকার" আপনি এর দ্বারা কী বোঝাতে চেয়েছেন তা আমি বুঝতে পারি না। এটি কাজ করার জন্য আপনার প্রতিটি পয়েন্টের সাথে পয়েন্ট সহ একটি পয়েন্ট স্তর দরকার?
রায়নার

@ রায়নার, সিউডো নোডের উদাহরণগুলির নতুন চিত্র যুক্ত করুন (৩): যদি আমি লিনিয়ার লেয়ার পয়েন্ট লেয়ার সিউডো নোডের জন্য পাই (নীল rects) আমি লিনিয়ার স্তরের পরবর্তী ত্রুটিগুলি ম্যানুয়ালি (স্বয়ংক্রিয়ভাবে নয়) ঠিক করি: এ - অনুপস্থিত জ্যামিতি যুক্ত করুন, বি - বিভক্ত ছেদরে লাইন, সি - সিউডো নোড সরান। যদি আমি স্বয়ংক্রিয়ভাবে সিউডো নোডগুলি ঠিক করি তবে আমি এ, বি জায়গায় ত্রুটি রেখেছি left
হাসিট

ঠিক আছে, আমি বি এবং সি বুঝতে পারি যখন আপনি "এ - অনুপস্থিত জ্যামিতি যুক্ত করেন" এর অর্থ কী? 2 পংক্তির যেখানে মিলিত হয় সেখানে এমন একটি বিন্দু যুক্ত করা দরকার?
রায়নার

@ রায়নার, এর অর্থ 'এ' তে লিনিয়ার বৈশিষ্ট্যটি যুক্ত করা উচিত (চিত্র অনুসারে রাস্তা / রাস্তা)। А
-তে

2

অ-মুক্ত সমাধান: এফএমই + এমআরএফ + স্মার্টক্লিয়েনার ট্রান্সফর্মার

নিখরচায় সমাধান গ্রাস ভি ক্লেইন (গ্রাস সরঞ্জাম সহ সর্বশেষ কিউজিআইএস 1.8.0 এটি ব্যবহারের সহজ উপায়) এবং অন্যান্য টপোলজি ক্লিনিং সরঞ্জাম


কিউজিআইএস 1.8.0। সি: Files প্রোগ্রাম ফাইলগুলি \ কোয়ান্টাম জিআইএস লিসবোয়া \ অ্যাপ্লিকেশনগুলি \ কিউগিস \ পাইথন \ প্লাগইন ডিরেক্টরি (1.0.7) এ SEXTANTE প্লাগইন ইনস্টল করুন। কিউজিআইএস প্রকল্পে রৈখিক shp-file লোড করুন (সিআরএস স্তর এবং প্রকল্প ডাব্লুজিএস 1984, 'ফ্লাইতে' ট্রান্সফর্মেশন অন)। তারপরে আমি 'ক্যানভাসে জিআরএসএস অঞ্চলটি সংজ্ঞায়িত করুন' (জিআরএসএস কমান্ডস - সরঞ্জামগুলি) প্রয়োগ করি এবং ভি ক্লেইন - আরএমডাঙ্গেল (থারসোল্ড = 0, আউটপুট ভেক্টর / ত্রুটির জন্য দির / নাম লিখি) প্রয়োগ করি। রান প্রক্রিয়া শেষে ত্রুটি পান 'স্তরটি লোড করা যায়নি: ডি: /error.shp ত্রুটিগুলি দেখতে SEXTANTE লগটি পরীক্ষা করুন'। টিওসি-তে নতুন স্তর যুক্ত হয়েছে, ত্রুটিযুক্ত স্তর লোড হয়নি।
হাসিট

1
গ্রাসে কমান্ড v.build.polylines বিদ্যমান - আমি দুটি লাইনের মধ্য থেকে একটি পেয়েছি যারা একটি ভার্টেক্সে ছেদ করে (মুছে ফেলা সিডো নোড), তবে এই কমান্ডটি আমি SEXTANTE প্লাগইনে খুঁজে পাই না
হস্ট

@ সিম্প্লেক্সিও আপনি দয়া করে পরামর্শ দিতে পারেন সিউডো-নোডগুলি সনাক্ত করতে v.clean এর কোন বিকল্পটি ব্যবহার করা যেতে পারে
ওস্মিত

2

ওপেনজ্যাম্প একটি ফ্রি জিআইএস ব্যবহার করে আপনার সিউডো নোডগুলি সন্ধানের পদক্ষেপ এখানে রয়েছে।
কিউজিআইএস এবং জিভিএসআইজি-এর Sextante প্লাগইন রয়েছে, সুতরাং এই একই পদক্ষেপগুলি তাদের কাজ করা উচিত, স্পেশাল জয়েন্ট
কিছুটা আলাদা হতে পারে।
আমি পরীক্ষার জন্য সংস্করণ 1.2 ব্যবহার করেছি।

- লাইন এন্ডপয়েন্টস
Sextante টুলবক্স, টপোলজি, লাইনগুলির শেষ পয়েন্টগুলি সংরক্ষণ করুন -> endpt_0

- আপনার লাইনগুলি
সিক্সেন্টেট টুলবক্সে সজ্জিত করুন, লাইন স্তরগুলির জন্য সরঞ্জামগুলি, সংলগ্ন রেখাগুলিতে যোগদান করুন

- আনস্প্লিট লাইন এন্ডপয়েন্টস
সেভস্ট্যান্ট টুলবক্স, টপোলজি, এর শেষ পয়েন্টগুলি সরিয়ে নিন লাইন -> endpt_1

- "সংলগ্ন রেখাগুলিতে যোগদান করুন" দ্বারা সরানো শেষ পয়েন্টগুলি সিউডো নোড

সরঞ্জামগুলি, অনুসন্ধানসমূহ, স্থানীয় প্রশ্নের,
উত্স স্তর "endpt_0"
সম্পর্ক " আন্তঃসংযোগগুলি "
মাস্ক স্তর "endpt_1"

সক্ষম বা পরিপূরক ফলাফল ক্লিক করুন


উত্তরের জন্য ধন্যবাদ! আমি কিউজিআইএস সেকসন্তে এই পদক্ষেপগুলি তৈরি করার চেষ্টা করছি, তবে আমি সেখানে "লাইনগুলির শেষ প্রান্তগুলি" এবং "সংলগ্ন রেখাগুলিতে যোগ দিন" কমান্ডগুলি পাই না find কিউজিআইএস সেকসেন্টে (জিভিএসআইজি 1.12 তে এই কমান্ড বিদ্যমান) বা v.build.polylines কমান্ড পাওয়া সম্ভব?
হস্টটি

আমি সবেমাত্র কিউজিআইএস সেফস্ট্যান্ট প্লাগইন ইনস্টল করেছি। আমি পুরো ফাংশনগুলিও দেখতে পাচ্ছি না, অনেকগুলি নিখোঁজ রয়েছে। কোনও আকার ফাইলে জিভিএসআইজি-র পদক্ষেপগুলি পরীক্ষা করা সহজ হওয়া উচিত।
ক্লিভিস

আমি কেবল উপরের কর্মপ্রবাহটি gvSIG 2.4.0.2834 এ যাচাই করেছি এবং এটি দুর্দান্ত কাজ করে। আমি চূড়ান্ত পদক্ষেপটি অন্য দুটি টুলবক্স জিওপ্রোসেসের সাথে প্রতিস্থাপন করেছি: প্রথমত, জিভিএসআইজি "স্পেসিয়াল জয়েন" , দ্বিতীয়টি "ফিল্টার ভেক্টর স্তর"DIST > 0 প্রকাশ হিসাবে ব্যবহার করুন । তদুপরি, একটি নতুন সরঞ্জাম তৈরি করার জন্য সমস্ত জিওপ্রোসেসগুলি একসাথে সেক্সট্যান্টে মডেলে বেঁধে রাখা যেতে পারে, যেমন "সিউডনোডগুলি সন্ধান করুন"
আন্তোনিও

2

কিউজিআইএস 1.9.0 মাস্টার (২.০) - এ প্লাগইন "টপোলজি চেকার" - এ সিউডো নোডগুলি (এবং অন্যান্য টপোলজির নিয়মগুলি) সন্ধানের সমাধান। লিঙ্ক: টোপোলজি যাচাইকারী YouTube- এ প্লাগ ইন , টোপোলজি যাচাইকারী GitHub থেকে প্লাগ ইন


1

পোস্টজিআইএসের সাহায্যে আপনি এই বিষয়ে আলোচিত ডাংলগুলি সন্ধানের জন্য ক্যোয়ারির একটি পরিবর্তিত সংস্করণ ব্যবহার করতে পারেন , কারণ সিউডনোডগুলি এমন নোড যা 2 টি লাইনস্ট্রিংস এবং ডাঙ্গলগুলি নোডগুলিকে 1 লাস্টারিংকে বাধা দেয় are

WITH nodes AS 
(SELECT ST_StartPoint(geom) AS pt FROM
linestring_table UNION ALL 
SELECT ST_EndPoint(geom) AS pt FROM
linestring_table) 
SELECT pt FROM nodes
GROUP BY pt HAVING count(*) = 2;
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.