পোস্টজিআইএস-এ পয়েন্ট ?োকানো হচ্ছে?


49

আমি আমার পোস্টজিআইএস বাদামে একটি সারণী তৈরি করেছি আমি পয়েন্টটি .োকাতে পারি না।

আমার প্রশ্নে কী ভুল?

CREATE TABLE app ( 
  p_id INTEGER PRIMARY KEY

);

SELECT AddGeometryColumn('app','the_geom','4326','POINT',2);

INSERT INTO app(p_id, the_geom) VALUES(2, POINT(-71.060316, 48.432044));

শেষ প্রশ্নের পরে এটি কিছু ত্রুটি দেখায় ..

ERROR:  column "the_geom" is of type geometry but expression is of type point
LINE 1: ...SERT INTO app(p_id, the_geom) VALUES(2, POINT(-71....
                                                             ^
HINT:  You will need to rewrite or cast the expression.


********** Error **********

ERROR: column "the_geom" is of type geometry but expression is of type point
SQL state: 42804
Hint: You will need to rewrite or cast the expression.
Character: 53

আমি ইতিমধ্যে আমার পোস্টজিআইএস সংস্করণ পরীক্ষা করেছি।

SELECT PostGIS_full_version();

আমি নিম্নলিখিত ফলাফল পেয়েছি ..

"POSTGIS="1.5.3" GEOS="3.3.1-CAPI-1.7.1" PROJ="Rel. 4.7.1, 23 September 2009" LIBXML="2.7.3" USE_STATS"

উত্তর:


84

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

আপনি সঠিকভাবে ডাব্লুকেটি ফর্ম্যাট করে ("," সরান) এবং এসআরআইডি সেট করে থাকলে আপনার ক্যোয়ারী কাজ করে। এই পদ্ধতির জন্য, ST_GeomFromText(wkt, srid)ভাল কাজ করে:

INSERT INTO app(p_id, the_geom)
VALUES(2, ST_GeomFromText('POINT(-71.060316 48.432044)', 4326));

যদি আপনার সংখ্যার দ্রাঘিমাংশ / অক্ষাংশের সাথে কলাম থাকে তবে আপনি সরাসরি একটি পয়েন্ট জ্যামিতি তৈরি করতে পারেন:

ST_SetSRID(ST_MakePoint(long, lat), 4326);

ম্যানুয়ালটিতে অন্যান্য জ্যামিতি নির্মাতাদের পরীক্ষা করে দেখুন ।


@ ভিক ৮86 এর অনুরোধের জন্য, সংখ্যার কলামগুলি এবং ব্যবহার the_geomকরে সারণিতে আপডেট করা যেতে পারে :applonglat

UPDATE app SET
  the_geom = ST_SetSRID(ST_MakePoint(long, lat), 4326);

আপনি এই বৈশিষ্ট্যটি ব্যবহার করে বিশদভাবে বলতে পারেন, "যদি আপনার সংখ্যার দ্রাঘিমাংশ অক্ষাংশের সাথে কলামগুলি থাকে তবে আপনি সরাসরি একটি পয়েন্ট জ্যামিতি তৈরি করতে পারেন: ST_SetSRID (ST_MakePoint (দীর্ঘ, ল্যাট), 4326);" এই মুহূর্তে আমার কাছে ল্যাট এবং লম্বা একটি টেবিল রয়েছে, পোস্টজিআইএস এপিআই ব্যবহার করতে পয়েন্ট ফর্ম্যাটে আমার এটি দরকার। সুতরাং আমি কীভাবে এই বৈশিষ্ট্যটি ব্যবহার করে পয়েন্ট কলামটি আপডেট করব তা জানতে চেয়েছিলাম। ধন্যবাদ বিক্রম
Vik86

@ ভিক 86 আপডেট হওয়া উত্তরটি দেখুন
মাইক টি

1

আপনি যদি জাভা ক্লায়েন্টের সাথে কাজ করছেন তবে আমার পরামর্শটি হ'ল ডেটা স্থানান্তর করতে বাইনারি প্রকারগুলি ব্যবহার করুন। স্মৃতি থেকে, আমি যখন ST_AsEWKT পদ্ধতিতে এই পরিবর্তনটি করেছি তখন আমি 10% এর পারফরম্যান্স উন্নতি রেকর্ড করেছি।

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