from shapely.geometry import Point, LineString
from pyproj import Transformer
from pyproj import CRS
class wgs842proj():
def __init__(self, fcrs=None, tcrs=None):
if fcrs is None:
fcrs = CRS("EPSG:4326")
if tcrs is None:
tcrs = CRS("EPSG:4527")
self.transformer = Transformer.from_crs(crs_4326, crs_proj)
def pointProj(self, p):
# p Point(113, 34)
lng, lat = p.x, p.y
y, x = self.transformer.transform(lat, lng)
return Point([x, y])
def lineProj(self, line):
# line LineString()
lngs, lats = line.xy
pts = [self.transformer.transform(lat, lng)for lat, lng in zip(lats, lngs)]
pts = [_[::-1]for _ in pts]
return LineString(pts)
if __name__ == '__main__':
p0 = [113.0, 34.0]
p1 = [113.5, 34.0]
ls = LineString([p0, p1])
p0 = Point(p0)
p1 = Point(p1)
op = wgs842proj()
p0_ = op.pointProj(p0)
p1_ = op.pointProj(p1)
ls_ = op.lineProj(ls)