Векторные плитки ST_AsMVT в проблеме проекции карты листовки - PullRequest
0 голосов
/ 20 марта 2020

Я подаю шейп-файл, преобразовав его в плитку, затем байты, а затем в карту листовки. Все это работает, за одним исключением, широты растягиваются все больше к полюсам при уменьшении, но этот эффект исчезает при увеличении. И розовые, и синие линии принадлежат одному и тому же набору данных.

enter image description here

При увеличении вы получаете следующее: enter image description here

############################################################
    def tile_ul(x, y, z):
        n = 2.0 ** z
        lon_deg = x / n * 360.0 - 180.0
        lat_rad = arctan(sinh(pi * (1 - 2 * y / n)))
        lat_deg = degrees(lat_rad)
        return  lon_deg,lat_deg
    ############################################################
    def get_tile(z,x,y):
        xmin, ymin = tile_ul(x, y, z)
        xmax, ymax = tile_ul(x + 1, y + 1, z)
        query = """SELECT ST_AsMVT(tile) FROM (
                   SELECT id, ST_AsMVTGeom(geom, ST_MakeEnvelope( %s, %s, %s, %s ,4326), 4096, 256, false ) geom 
                   FROM seaarea ) as tile"""
        cursor = db.connection.cursor()
        cursor.execute(query,(xmin,ymin,xmax,ymax))
        tile = bytes(cursor.fetchone()[0])
        cursor.close()
        return tile

код клиента:

    var url = "http://localhost:5000/tiles/{z}/{x}/{y}"
var mapillaryLayer = L.vectorGrid.protobuf(url, {vectorTileLayerStyles: {
            fillColor: 'red'}}).addTo(mymap);

Любые предложения будут с благодарностью.

...