mirror of
https://github.com/xbgmsharp/postgsail.git
synced 2025-09-17 19:27:49 +00:00
Update python function to filter geojson, add parameter to filter on LineString or Point
Still pending work using pg type and transform json
This commit is contained in:
@@ -387,21 +387,23 @@ COMMENT ON FUNCTION
|
|||||||
---------------------------------------------------------------------------
|
---------------------------------------------------------------------------
|
||||||
-- python geojson parser
|
-- python geojson parser
|
||||||
--
|
--
|
||||||
|
--CREATE TYPE geometry_type AS ENUM ('LineString', 'Point');
|
||||||
DROP FUNCTION IF EXISTS geojson_py_fn;
|
DROP FUNCTION IF EXISTS geojson_py_fn;
|
||||||
CREATE OR REPLACE FUNCTION geojson_py_fn(original JSONB) RETURNS JSONB LANGUAGE plpython3u
|
CREATE OR REPLACE FUNCTION geojson_py_fn(IN original JSONB, IN geometry_type TEXT) RETURNS JSONB LANGUAGE plpython3u
|
||||||
AS $geojson_py$
|
AS $geojson_py$
|
||||||
import json
|
import json
|
||||||
parsed = json.loads(original)
|
parsed = json.loads(original)
|
||||||
output = []
|
output = []
|
||||||
for i, item in enumerate(parsed):
|
for idx, x in enumerate(parsed):
|
||||||
for geom in item:
|
#plpy.notice(idx, x)
|
||||||
#print(geom)
|
for feature in x:
|
||||||
if geom['geometry']['type'] == 'LineString':
|
#plpy.notice(feature)
|
||||||
#plpy.notice('deleting...')
|
if (feature['geometry']['type'] != geometry_type):
|
||||||
parsed[i].remove(geom)
|
output.append(feature)
|
||||||
output += parsed[i]
|
#else:
|
||||||
|
# plpy.notice('ignoring')
|
||||||
return json.dumps(output)
|
return json.dumps(output)
|
||||||
$geojson_py$
|
$geojson_py$ -- TRANSFORM FOR TYPE jsonb LANGUAGE plpython3u;
|
||||||
IMMUTABLE STRICT;
|
IMMUTABLE STRICT;
|
||||||
-- Description
|
-- Description
|
||||||
COMMENT ON FUNCTION
|
COMMENT ON FUNCTION
|
||||||
|
Reference in New Issue
Block a user