Skip to content

Commit

Permalink
merge: simplify ogr2ogr clipping polygn
Browse files Browse the repository at this point in the history
  • Loading branch information
frodrigo committed Dec 25, 2022
1 parent 560db2e commit 2d941a2
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 6 deletions.
2 changes: 1 addition & 1 deletion analysers/Analyser_Merge.py
Original file line number Diff line number Diff line change
Expand Up @@ -739,7 +739,7 @@ def import_(self, table, osmosis):
source_layer.append(f"'{self.layer}'")

s_src = re.search('EPSG:([0-9]+)', subprocess.run(["gdalsrsinfo", "-e", *source_layer], stdout=subprocess.PIPE).stdout.decode('utf-8')).group(1)
wkt = PointInPolygon.PointInPolygon(self.polygon_id).polygon.as_wkt(s_src) if self.polygon_id else None
wkt = PointInPolygon.PointInPolygon(self.polygon_id).polygon.as_simplified_wkt(s_src, self.srid()) if self.polygon_id else None

select = "-select '{}'".format(','.join(self.fields)) if self.fields else ''
gdal = "ogr2ogr -f PostgreSQL 'PG:{}' -lco SCHEMA={} -nln '{}' {} -lco OVERWRITE=yes -lco GEOMETRY_NAME=geom -lco OVERWRITE=YES -lco LAUNDER=NO -skipfailures {} -t_srs EPSG:{} '{}' {}".format(
Expand Down
16 changes: 11 additions & 5 deletions modules/Polygon.py
Original file line number Diff line number Diff line change
Expand Up @@ -43,12 +43,18 @@ def __init__(self, polygon_id, cache_delay=60):
wkt = wkt.split(";", 1)[1]
self.polygon = loads(wkt)

def as_wkt(self, srid) -> str:
def as_simplified_wkt(self, out_src, metric_src) -> str:
wgs84 = pyproj.CRS('EPSG:4326')
t_src = pyproj.CRS(f'EPSG:{srid}')
project = pyproj.Transformer.from_crs(wgs84, t_src, always_xy=True).transform
t_poly = transform(project, self.polygon)
return t_poly
metric_src = pyproj.CRS(f'EPSG:{metric_src}')
out_src = pyproj.CRS(f'EPSG:{out_src}')
project_metric = pyproj.Transformer.from_crs(wgs84, metric_src, always_xy=True).transform
project_out = pyproj.Transformer.from_crs(metric_src, out_src, always_xy=True).transform

out_poly = transform(project_metric, self.polygon)
out_poly = out_poly.buffer(5000).simplify(5000)

out_poly = transform(project_out, out_poly)
return out_poly

def bboxes(self):
bbox = self.polygon.bounds
Expand Down

0 comments on commit 2d941a2

Please sign in to comment.