SQL学习笔记04_Mongo搜索地理位置数据,以及geojson文件处理

最初研究Mongo - 以GeoJSON的目的是想在前端地图服务添加一个搜索功能:

目标类型;搜索范围。

这个功能通过前端把与Mongo通信,在蒙戈中计算并将结果返回到前端,在网页中显示。于是首先从Mongo操作的入手进行研究。

1.mongo搜索地理位置数据步骤

1.1.添加数据

1)添加以GeoJSON数据

C:\Users\dell>cd C:\Program Files\MongoDB\Server\4.0\bin

>mongoimport -d test -c json --type json C:/Users/dell/Desktop/MongoDB/geojson.json

路径根据自己电脑设置

2)直接在机器人3T中操作

插入文件,将以下数据填进去,点保存。

{
    "_id" : 55,
    "coordinate" : {
        "longitude" : 121.47954,
        "latitude" : 31.22911
    }
}
{
    "_id" : 53,
    "coordinate" : {
        "longitude" : 121.42485,
        "latitude" : 31.24458
    }
}
{
    "_id" : 56,
    "coordinate" : {
        "longitude" : 121.55226,
        "latitude" : 31.22385
    }
}

1.2.搜索

/ *以GeoJSON数据存在geojsonwutou集合中,2)数据存在TEST03集合中* /

/*1*/
db.test03.createIndex({"coordinate":"2d"}) //首先建立空间索引
db.test03.find({
       coordinate:{"$near":[130.261,31.729],$maxDistance:10}
        })

/*2*/
db.test03.createIndex({coordinate:"2dsphere"}) 
db.test03.find({
       coordinate:{"$nearSphere":[121.773,31.042],$maxDistance:1}
        })

/*3*/
//geojson格式要删掉3个一级标签才能正常索引
db.test02.createIndex({geometry:"2dsphere"}) //geojson只能建立2dsphere
db.test02.find(
    {
        geometry: {
            $near:{
                $geometry:{
                    "type" : "Point",
                    "coordinates" : [121.427788, 31.201160]
                },
                $maxDistance: 100  //geojson单位是m,其他数据单位是度,经纬度小数点后第六位≈1m
            }
        }
    }
)

必须设置index,否则无法进行搜索操作

2.geojson注意事项

GeoJSON的文件通过shape文件转换得到,

然后删除生成JSON文件的前四行和最后两行

{
    "_id" : ObjectId("5b83de57013ba150921eb001"),
    "type" : "FeatureCollection",
    "features" : [ 
            ......
            ......
            ......
    ]
}

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值