簡體   English   中英

從點數組創建postgres postgis多邊形

[英]Create postgres postgis polygon from array of points

我有位置數組,我想將它們作為多邊形列插入postgres表中。

我有一個類型為geometry(Polygon,4326)的列area

    const area = [
            { lat: 6.517784, lng: 3.368254 },
            { lat: 6.522207, lng: 3.376356 },
            { lat: 6.525885, lng: 3.376322 },
            { lat: 6.526396, lng: 3.379497 },
            { lat: 6.524009, lng 3.383188 },
            { lat: 6.523668, lng: 3.398294 },
            { lat: 6.517431, lng: 3.402618 },
            { lat: 6.514458, lng: 3.404732 },
            { lat: 6.510535, lng: 3.398294 },
            { lat: 6.501794, lng: 3.397425 },
            { lat: 6.496016, lng: 3.395054 },
            { lat: 6.488874, lng: 3.392029 },
            { lat: 6.491006, lng: 3.389969 },
            { lat: 6.492456, lng: 3.385677 },
            { lat: 6.494162, lng: 3.384990 },
            { lat: 6.492968, lng: 3.378467 },
            { lat: 6.498554, lng: 3.376289 }
]

我正在將上面的數據轉換為字符串

   const transform = area.map(position => return `${position.lat} ${position.lng}`}).join(', ')

然后使用書架和knex-posgis進行插入查詢

const body = Object.assign({}, attrs, {
         area: st.geomFromText(`POLYGON((${transform}))`, 4326)
    });

    return Model.forge(body)
        .save()
        .then((result) => {
            return done(null, result)
        })
        .catch((error) => {
            return done(error, null)
        })

我收到一個錯誤消息,說geometry contains non-closed rings不確定是什么引起了錯誤。 任何幫助將不勝感激。

多邊形應與起點在同一點結束。 這就是為什么說不non-closed

檢查示例ST_MakePolygon

只需將第一個點添加到末尾即可。

const area = [
        { lat: 6.517784, lng: 3.368254 },
        { lat: 6.522207, lng: 3.376356 },
        { lat: 6.525885, lng: 3.376322 },
        { lat: 6.526396, lng: 3.379497 },
        { lat: 6.524009, lng 3.383188 },
        { lat: 6.523668, lng: 3.398294 },
        { lat: 6.517431, lng: 3.402618 },
        { lat: 6.514458, lng: 3.404732 },
        { lat: 6.510535, lng: 3.398294 },
        { lat: 6.501794, lng: 3.397425 },
        { lat: 6.496016, lng: 3.395054 },
        { lat: 6.488874, lng: 3.392029 },
        { lat: 6.491006, lng: 3.389969 },
        { lat: 6.492456, lng: 3.385677 },
        { lat: 6.494162, lng: 3.384990 },
        { lat: 6.492968, lng: 3.378467 },
        { lat: 6.498554, lng: 3.376289 },
        { lat: 6.517784, lng: 3.368254 }
]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM