পোস্টজিআইএস টেবিলের সমস্ত জ্যামিতি পুনরায় প্রজেক্ট করা হচ্ছে?


39

আমি এসআরআইডি: 4326 দিয়ে একটি স্থানিক টেবিল তৈরি করেছি। এখন আমি মোট প্রোডাকশনটি এসআরআইডি: 32644 এ একটি নতুন টেবিলটিতে পরিবর্তন করতে চাই। পুরানো টেবিলটি অপরিবর্তিত থাকা উচিত।


আমি এটি একটি উত্তরের পরিবর্তে মন্তব্য হিসাবে যুক্ত করছি কারণ আরও মার্জিত পদ্ধতি থাকা উচিত। তবে আপনি টেবিলটি অনুলিপি করতে পারেন এবং তারপরে চালনা করতে পারেন: আপডেট <টেবিল> SET the_geom = ST_Transform (the_geom, 32644); (ধরে নিই যে 32304 এর জন্য আপনার স্থানিক_সরিফ_সিসিতে আপনার সম্পূর্ণ প্রবেশ রয়েছে))
L_Holcombe

আমি চেষ্টা করেছিলাম তবে এই ত্রুটি আপডেটটি abc SET geom = ST_Transfor (geom, 32644) আপডেট করুন; "এবিসি" সম্পর্কের জন্য নতুন সারি চেকের বাধা লঙ্ঘন করে "প্রয়োগ_সরিদ_জুম"
সত্যচন্দ্র

1
এই সীমাবদ্ধতা বাদ দিন। এবং এর স্থির
সিমপ্লেসিও

উত্তর:


62

আপনি যদি PostGIS 2.0+ এ থাকেন তবে আপনি যেতে পারেন:

ALTER TABLE mytable 
  ALTER COLUMN geom 
  TYPE Geometry(Point, 32644) 
  USING ST_Transform(geom, 32644);

অবশ্যই লক্ষণীয় যে আপনার জ্যামিতির আসল জ্যামিতির ধরণের সাথে "পয়েন্ট" প্রতিস্থাপন করা উচিত।
পল রামসে

সেখানে প্রতিস্থাপন করতে একটি সহজ উপায় আছে কি Pointসঙ্গে The same geometry type as it was?
মোহাইমিন

না, ভয় নেই।
পল রামসে

18
CREATE TABLE new_table AS 
  SELECT ST_Transform(the_geom,32644) AS the_geom 
  FROM original_table;

এটিকে কিউজিসআইএসে যুক্ত করার জন্য আপনার স্থানিক টেবিলটিতে একটি পূর্ণসংখ্যা আইডি ক্ষেত্র থাকা উচিত।


আমি উপরের মত চেষ্টা করেছিলাম এবং সফল হয়েছি, তবে আমি ফলাফল টেবিলটি কিগিস / ইউডিগে রফতানি করতে অক্ষম এমনকি এটি ডাটাবেসে প্রদর্শিত হচ্ছে কি?
সত্য চন্দ্র

আপনার সঠিক সমস্যা কি?
ভ্লাদিমির

2
আপনি যদি 2.0G সংস্করণের চেয়ে পুরনো পোস্টজিআইএসের কোনও সংস্করণ ব্যবহার করছেন তবে আপনাকে আপনার জ্যামিতি_কলামগুলি সারণীতে আপনার নতুন সারণীতে নির্দেশ করে একটি রেকর্ড যুক্ত করতে হবে।
আরে ওভারথারে

4

এইভাবে অনুসরণ করুন:

  1. CREATE TABLE 'new_table' AS SELECT * FROM 'old_table';
  2. ALTER TABLE new_table DROP CONSTRAINT enforce_srid_the_geom;
  3. ALTER TABLE new_table DROP CONSTRAINT enforce_geotype_the_geom;
  4. UPDATE new_table SET the_geom = ST_SetSRID(the_geom, new_srid);
  5. ALTER TABLE new_table ADD CONSTRAINT enforce_srid_the_geom CHECK (st_srid(the_geom) = (new_srid));
  6. ALTER TABLE new_table ADD CONSTRAINT enforce_geotype_geom CHECK ((geometrytype(the_geom) = 'POINT'::text OR the_geom IS NULL);
  7. হ্যাঁ, ওটাই!

আপনি যদি প্রথম লাইনে নতুন টেবিল তৈরি করতে না পারেন তবে চেষ্টা করুন ২ এবং ৩ and

আমি এটি আপনাকে সাহায্য করে আশা করি...


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