소스 검색

增加cgcs2000坐标系与火星坐标系等互转、增加cgcs2000示例、增加转换后结果为null的提示

liuhang 6 년 전
부모
커밋
aa43962f7f
5개의 변경된 파일64개의 추가작업 그리고 3개의 파일을 삭제
  1. 16 3
      README.md
  2. 12 0
      src/geoc_bd09tocgcs2000.sql
  3. 12 0
      src/geoc_cgcs2000tobd09.sql
  4. 12 0
      src/geoc_cgcs2000togcj02.sql
  5. 12 0
      src/geoc_gcj02tocgcs2000.sql

+ 16 - 3
README.md

@@ -3,17 +3,30 @@
   <img alt="Version" src="https://img.shields.io/badge/version-1.0-blue.svg?cacheSeconds=2592000" />
 </p>
 
-> 基于PostgreSQL和PostGIS的坐标转换函数,支持点、线、面的WGS84、GCJ02以及BD09坐标系之间互转。
+> 基于PostgreSQL和PostGIS的坐标转换函数,支持点、线、面的WGS84和CGCS2000与GCJ02和BD09坐标系与之间互转。
 ## Example
 ```sql
-GCJ02转WGS84
-select geoc_gcj02towgs84(geom) from test_table
+-- 如果转换后结果为null,查看geom的srid是否为4326或者4490
 WGS84转GCJ02
 select geoc_wgs84togcj02(geom) from test_table
+GCJ02转WGS84
+select geoc_gcj02towgs84(geom) from test_table
+
 WGS84转BD09
 select geoc_wgs84tobd09(geom) from test_table
 BD09转WGS84
 select geoc_bd09towgs84(geom) from test_table
+
+CGCS2000转GCJ02
+select geoc_cgcs2000togcj02(geom) from test_table
+GCJ02转CGCS2000
+select geoc_gcj02tocgcs2000(geom) from test_table
+
+CGCS2000转BD09
+select geoc_cgcs2000tobd09(geom) from test_table
+BD09转CGCS2000
+select geoc_bd09tocgcs2000(geom) from test_table
+
 GCJ02转BD09
 select geoc_gcj02tobd09(geom) from test_table
 BD09转GCJ02

+ 12 - 0
src/geoc_bd09tocgcs2000.sql

@@ -0,0 +1,12 @@
+CREATE OR REPLACE FUNCTION "public"."geoc_bd09tocgcs2000"("geom" "public"."geometry")
+  RETURNS "public"."geometry" AS $BODY$
+DECLARE
+BEGIN
+IF st_srid(geom) != '4490' THEN
+        RETURN null;
+end if;
+return st_transform(st_setsrid(geoc_bd09towgs84(geom),4326),4490);
+END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100

+ 12 - 0
src/geoc_cgcs2000tobd09.sql

@@ -0,0 +1,12 @@
+CREATE OR REPLACE FUNCTION "public"."geoc_cgcs2000tobd09"("geom" "public"."geometry")
+  RETURNS "public"."geometry" AS $BODY$
+DECLARE
+BEGIN
+IF st_srid(geom) != '4490' THEN
+        RETURN null;
+end if;
+return geoc_wgs84tobd09(st_transform(st_setsrid(geom,4490),4326));
+END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100

+ 12 - 0
src/geoc_cgcs2000togcj02.sql

@@ -0,0 +1,12 @@
+CREATE OR REPLACE FUNCTION "public"."geoc_cgcs2000togcj02"("geom" "public"."geometry")
+  RETURNS "public"."geometry" AS $BODY$
+DECLARE
+BEGIN
+IF st_srid(geom) != '4490' THEN
+        RETURN null;
+end if;
+return geoc_wgs84togcj02(st_transform(st_setsrid(geom,4490),4326));
+END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100

+ 12 - 0
src/geoc_gcj02tocgcs2000.sql

@@ -0,0 +1,12 @@
+CREATE OR REPLACE FUNCTION "public"."geoc_gcj02tocgcs2000"("geom" "public"."geometry")
+  RETURNS "public"."geometry" AS $BODY$
+DECLARE
+BEGIN
+IF st_srid(geom) != '4490' THEN
+        RETURN null;
+end if;
+return st_transform(st_setsrid(geoc_gcj02towgs84(geom),4326),4490);
+END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100