Javascript RejectionDB r.polygon()-GeoJSON LinearRing必须至少有四个位置?

Javascript RejectionDB r.polygon()-GeoJSON LinearRing必须至少有四个位置?,javascript,node.js,polygon,geojson,rethinkdb,Javascript,Node.js,Polygon,Geojson,Rethinkdb,我在将geoJSON多边形插入数据库时遇到问题 以下是我试图插入的数据: { "feature": { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ -71.17351189255714, 42.3502

我在将geoJSON多边形插入数据库时遇到问题

以下是我试图插入的数据:

{
    "feature": {
        "type": "Feature",
        "geometry": {
            "type": "Polygon",
            "coordinates": [
                [
                    -71.17351189255714,
                    42.350224666504324
                ],
                [
                    -71.1677360907197,
                    42.34671571695422
                ],
                [
                    -71.16970919072628,
                    42.35326835618748
                ],
                [
                    -71.14341516047716,
                    42.36174674733808
                ],
                [
                    -71.17559093981981,
                    42.368232175909064
                ],
                [
                    -71.17351189255714,
                    42.350224666504324
                ]
            ]
        },
        "properties": {}
    },
    "name": "New Polygon"
}
以下是我试图执行的代码:

r.table( 'homebases' ).insert( {
    xid: data.xid,
    name: data.name,
    geoType: "polygon",
    geoPoly: r.geojson( data.feature.geometry )
} ).run().then( function ( doc ) {
    return res.send( doc.generated_keys[ 0 ] )
} ).error( function ( err ) {
    console.error( err.message )
    return res.send( 500, err.message )
} )
我得到了这个错误:

GeoJSON LinearRing must have at least four positions
我不太确定这里发生了什么,因为我可以用geoJSON点做同样的事情,而且效果很好。API文档中说我可以添加一个“类型”:“多边形”geoJSON对象


我试着到处找,但找不到任何解决办法。我不太确定如何继续进行这项工作。任何帮助都将不胜感激!!!谢谢大家!

输入数据不是有效的GeoJSON多边形

根据规范[1]:

对于“多边形”类型,“坐标”成员必须是线性坐标数组的数组

让我们看看什么是“线性坐标阵列”[2]:

LinearRing是具有4个或更多位置的闭合线条字符串。第一个和最后一个位置是等效的(它们表示等效点)。虽然LinearRing没有显式表示为GeoJSON几何体类型,但它在多边形几何体类型定义中被引用

简而言之,您在这里提到的输入数据在
坐标
字段中缺少一个嵌套数组。多边形的
坐标
必须是坐标数组的数组。这样,您就可以在多边形中构造一个带孔的多边形(多边形中的第一个线性化是外边,在
坐标
数组中的任何后续线性化都将被视为孔)

以下方面应起作用:

{
    "feature": {
        "type": "Feature",
        "geometry": {
            "type": "Polygon",
            "coordinates": [
                [
                    [
                        -71.17351189255714,
                        42.350224666504324
                    ],
                    [
                        -71.1677360907197,
                        42.34671571695422
                    ],
                    [
                        -71.16970919072628,
                        42.35326835618748
                    ],
                    [
                        -71.14341516047716,
                        42.36174674733808
                    ],
                    [
                        -71.17559093981981,
                        42.368232175909064
                    ],
                    [
                        -71.17351189255714,
                        42.350224666504324
                    ]
                ]
            ]
        },
        "properties": {}
    },
    "name": "New Polygon"
}
[1]


[2]

这是一个很好的收获!我真不敢相信我错过了那个。我使用turp.js生成了多边形,但忽略了知道turp对我来说有多一致的格式。谢谢你的帮助!!!