99import glob
1010import shutil
1111import geopandas
12- # noinspection PyUnresolvedReferences
13- import pyogrio
14- from pyproj import Transformer
1512from tempfile import TemporaryDirectory
1613import logging
1714
@@ -49,8 +46,6 @@ def store_version(key: str, version: str):
4946 csdi_dataset ["id" ])
5047 src_id = json .loads (r .content )['_source' ]['fileid' ].replace ('-' , '' )
5148
52- epsgTransformer = Transformer .from_crs ('epsg:2326' , 'epsg:4326' )
53-
5449 logging .info ("Fetching FGDB" )
5550 r = requests .get (
5651 "https://static.csdi.gov.hk/csdi-webpage/download/" + src_id + "/fgdb" )
@@ -67,25 +62,11 @@ def store_version(key: str, version: str):
6762 z .extractall (tmpdir )
6863 gdb_path = os .path .join (tmpdir , gdb_name )
6964 logging .info ("Reading data (1)" )
70- gdf = geopandas .read_file (gdb_path , encoding = 'utf-8' , engine = "pyogrio" )
65+ gdf = geopandas .read_file (gdb_path , encoding = 'utf-8' )
66+ logging .info ("Transforming data" )
67+ gdf .to_crs (epsg = 4326 , inplace = True )
7168 logging .info ("Reading data (2)" )
72- data = json .loads (gdf .to_json (drop_id = True ))
73-
74- logging .info ("Transforming data" )
75- for i , feature in enumerate (data ["features" ]):
76- if feature ["geometry" ]["type" ] == "MultiLineString" :
77- for j , coordinates in enumerate (
78- feature ["geometry" ]["coordinates" ]):
79- for k , coordinate in enumerate (coordinates ):
80- lat , lng = epsgTransformer .transform (
81- coordinate [1 ], coordinate [0 ])
82- data ["features" ][i ]["geometry" ]["coordinates" ][j ][k ] = [
83- lng , lat ]
84- else :
85- for j , coordinate in enumerate (feature ["geometry" ]["coordinates" ]):
86- lat , lng = epsgTransformer .transform (
87- coordinate [1 ], coordinate [0 ])
88- data ["features" ][i ]["geometry" ]["coordinates" ][j ] = [lng , lat ]
69+ data = gdf .to_geo_dict (drop_id = True )
8970
9071 logging .info ("Storing data" )
9172 for feature in data ["features" ]:
0 commit comments