ইতিমধ্যে টার্গেট স্ক্রিডে থাকা জ্যামিতিতে এস এস ট্রান্সফর্ম কল করা হচ্ছে?


11

আমি একটি ফাংশন লিখছি যার একটি জ্যামিতি হিসাবে প্যারামিটার রয়েছে যা বিভিন্ন অনুমানে হতে পারে:

CREATE OR REPLACE FUNCTION foo(in geometry) RETURNS boolean AS $$
DECLARE
    transformed_geom geometry := in;
BEGIN
    IF ST_SRID(transformed_geom) != 32737 THEN
        transformed_geom := ST_Transform(transformed_geom, 32737);
    END IF;
    [ ... ]
END;
$$ language plpgsql;

একটি নির্দিষ্ট অভিক্ষেপে ফাংশনটির জ্যামিতির প্রয়োজন (32737) তবে আমি কলারকে রূপান্তর করতে বাধ্য করতে চাই না, আমি এটি ফাংশনের অভ্যন্তরে পরিচালনা করতে পছন্দ করি।

প্রশ্নটি হ'ল প্রকৃত শ্রীডটি পরীক্ষা করার পরিবর্তে, সবসময়ই ST_Transfor কল করা নিরাপদ ? জ্যামিতি ইতিমধ্যে লক্ষ্য প্রক্ষেপণে থাকলে কি কিছু করবে?

আমি এ জাতীয় একটি কোয়েরি যাচাই করে দেখছি যে এটি নিরাপদ বলে মনে হচ্ছে, তবে এটি দস্তাবেজে না দেখে কেউ যদি এটির সত্যতা নিশ্চিত করতে পারে তবে তা দুর্দান্ত।

SELECT ST_AsEWKT(geom), ST_AsEWKT(ST_Transform(geom, 32737)) FROM table_in_32737;

উত্তর:


12

ফাংশনটি একইর জন্য এবং বাইরে স্ক্রিডের জন্য পরীক্ষা করে এবং সোর্স কোড হিসাবে দেখা যায়, যদি তাই করা হয় তবে ছোঁয়াচে ফিরে আসে :

/*
* If input SRID and output SRID are equal, return geometry
* without transform it
*/
if ( input_srid == output_srid )
    PG_RETURN_POINTER(PG_GETARG_DATUM(0));

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