পোস্টজিআইএসে আপনি আংশিক 3 ডি বৈশিষ্ট্যগুলি কীভাবে ব্যবহার করবেন?


10

আমাদের জরিপের তথ্য থেকে বৈশিষ্ট্য রয়েছে যাতে আংশিক 3 ডি তথ্য থাকে।

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

পোস্টজিআইএস ব্যবহার করে, কোন ডেটা মডেল আপনি কোনও ধরণের তথ্য হারাতে বা তৈরি না করে, এটিকে যথাসম্ভব অ্যাক্সেসযোগ্য রাখার জন্য এই জাতীয় তথ্য সংরক্ষণ করার পরামর্শ দিবেন?


2 ডি লাইনস্ট্রিং কোনও রাস্তার প্রতিনিধিত্ব করছে, এতে উচ্চতা রয়েছে - যাতে 3D হয় - আপনার ডেটার জন্য ST_Force_3D ব্যবহার করুন - postgis.refferences.net/docamentation/manual-1.5SVN/…
ম্যাপারজ

একটি 0 z স্থানাঙ্ক সঠিক নয়, এবং ডেটা উত্স হিসাবে একই মান প্রতিনিধিত্ব করে না। ST_Force_3D আমাদের পক্ষে কাজ করবে না। ডেটা উত্স এবং আমাদের ডাটাবেসগুলির মধ্যে একটি সঠিক দ্বিপাক্ষিক ম্যাপিং করতে সক্ষম হওয়াই ধারণা।
relet

উত্তর:


2

আপনি অ-পরিমাপ করা জেড মানগুলি হিসাবে সংরক্ষণ করতে পারেন 'nan'::float8। উদাহরণ স্বরূপ:

SELECT ST_AsText(g), ST_X(g), ST_Y(g), ST_Z(g), ST_Z(g) <> 'nan'::float8 AS has_z
FROM (
  SELECT ST_MakePoint(1, 2, 'nan'::float8) AS g
  UNION SELECT ST_MakePoint(4, 5, 6) AS g
) AS f;

       st_astext       | st_x | st_y | st_z | has_z
-----------------------+------+------+------+-------
 POINT Z (1 2 1.#QNAN) |    1 |    2 |  NaN | f
 POINT Z (4 5 6)       |    4 |    5 |    6 | t
(2 rows)

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

SELECT 'POINT Z (1 2 1.#QNAN)'::geometry;

ERROR:  parse error - invalid geometry
LINE 1: SELECT 'POINT Z (1 2 1.#QNAN)'::geometry;
               ^
HINT:  "POINT Z (1 2 1.#Q" <-- parse error at position 17 within geometry

1

ত্রি-বিন্যাসের (ট্রিপল) মান রয়েছে এমন লাইনস্ট্রিংয়ের শীর্ষবিন্দু ধরে রাখতে তিনটি মাত্রা সহ একটি গৌণ জ্যামিতি কলাম তৈরি করুন। এই স্কিমাটি কাজ করার জন্য নিম্নলিখিত অনুমানগুলি অনুমান করা হয়:

  • লাস্টারিং বৈধ, এটিতে নকল পয়েন্ট নেই
  • জ্যামিতিগুলি লাইনস্ট্রিংস
  • কোনও মাধ্যমিক জ্যামিতির কলামে সজ্জিত করার জন্য মার্জিত হওয়ার জন্য কোনও প্রদত্ত জ্যামিতিতে 3 ডি স্থানাঙ্কের সাথে কমপক্ষে দুটি ভার্সেক্স থাকতে হবে
  • একটি ট্রিগার এএসডি রাখার জন্য মাধ্যমিক জ্যামিতি কলামটি পূরণ করবে।

জ্যামিতিটি বৈধ হয়েছে লাইনস্ট্রিংগুলিতে সদৃশ পয়েন্টগুলিকে অনুমতি না দেওয়ার জন্য এবং পর্যায়ে কোনও স্বয়ং ছেদ করার পক্ষে পর্যাপ্ত হওয়া উচিত। সুতরাং প্রতিটি স্থানাঙ্ক উত্স জ্যামিতির শীর্ষবিন্দু সনাক্ত করতে একটি প্রাইমারি কী এর মতো আচরণ করবে।

এটি সম্পর্কের মডেল থেকেও সঠিক:

  • কোনও অপ্রয়োজন হবে না, তথ্য ছাড়াই ভার্টেক্স গৌণ জ্যামিতি কলামে উপস্থিত হয় নি
  • উত্স ডেটা পরিবর্তনগুলি ট্রিগার দ্বারা প্রাপ্ত ডেটাতে প্রচার করা হবে।
  • সত্য হিসাবে বিবেচিত কেবল তথ্যই ডাটাবেসে সংরক্ষণ করা হবে, কোনও কৃত্রিম ডেটা তৈরি করা হবে না।

মাল্টিলিনেস্টেরিংয়ের ক্ষেত্রে জিনিসগুলি আরও শক্ত হতে পারে কারণ এখন একটি সংযুক্ত প্রাথমিক কী সহ অতিরিক্ত টেবিল থাকতে হবে:

  • উত্স জ্যামিতির রোউইড (জিড, একটি অনন্য সনাক্তকারী)
  • প্রদত্ত মাল্টিজিওমেট্রির অভ্যন্তরে জ্যামিতিএন অবস্থান যা অন্তরালের মধ্যে রয়েছে তা অবশ্যই পরীক্ষা করা উচিত [1-N]
  • সম্পর্কিত টেবিল রোউইডের একটি ফোরিং কী (গিড)
  • ব্যবধানটি বৈধ কিনা তা নিশ্চিত করতে একটি ট্রিগার / চেক ফাংশন

উপরের প্রাথমিক কীটি প্রদত্ত জ্যামিতির জন্য নকল জ্যামিতি সূচকগুলির সন্নিবেশগুলি প্রতিরোধ করবে। ট্রিগার / চেক অবৈধ সূচকগুলি প্রতিরোধ করবে। এছাড়াও এখানে সারিগুলি অবশ্যই বিদেশী কী দিয়ে উত্স ডেটা হতে হবে। পূর্ববর্তী সমস্ত বিধি প্রযোজ্য।

একটি সরলীকরণ হ'ল অতিরিক্ত কলামে ব্যবহার করা হবে তবে ধরণের জ্যামিতির নয় বরং অ্যারে হিসাবে ঘোষিত একই ধরণের জেড মান।

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