微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将 geojson 文件加载到 Django 数据库中

如何解决将 geojson 文件加载到 Django 数据库中

有人可以帮我吗?

我正在尝试将两个 geojson 文件放入我的数据库 (django.contrib.gis.db.backends.postgis) 中,但没有成功。

模型

class Node(models.Model):
    network = models.ForeignKey(RoadNetwork,on_delete=models.CASCADE)
    node_id = models.IntegerField() 
    name = models.CharField('Node Name',max_length=200)
    location = models.PointField()

表格

class NodeForm(forms.ModelForm):
    my_file = forms.FileField()
    class Meta:
        model=Node
          fields = [
          'network','my_file',]

views(这是我的观点,我以为问题出在外键上,但没有。上传文件时什么也没发生。我不知道我错在哪里。

def upload_node(request):
    template = "upload.html"
    form = NodeForm()
    if request.method == 'POST':
        form = NodeForm(request.POST)
        if form.is_valid():
            network_fk = form.cleaned_data['nework']

            datafile = request.FILES['my_file']
            objects = json.load(datafile)
            for object in objects['features']:
                properties = object['properties']
                geometry = object['geometry']
                node_id = properties.get('id')
                name = properties.get('name','no-name')
                location = fromstr(geometry.get('coordinates'))
                Node(
                    node_id = node_id,name = name,location = location,network = network_fk,).save(commit=True)

    return render(request,template,{'form':form})

geojson 文件

{
"type": "FeatureCollection","features": [
{ "type": "Feature","properties": { "id": 1,"name": "CBD" },"geometry": { "type": "Point","coordinates": "POINT (0.0 0.0)" } },{ "type": "Feature","properties": { "id": 2,"name": "E - 1" },"coordinates": "POINT (4.0 0.0)" } },"properties": { "id": 3,"name": "NE - 1" },"coordinates": "POINT (2.8284 2.8284)" } },"properties": { "id": 4,"name": "N - 1" },"coordinates": "POINT (0.0 4.0)" } },"properties": { "id": 5,"name": "NW - 1" },"coordinates": "POINT (-2.8284 2.8284)" } },"properties": { "id": 6,"name": "W - 1" },"coordinates": "POINT (-4.0 0.0)" } },"properties": { "id": 7,"name": "SW - 1" },"coordinates": "POINT (-2.8284 -2.8284)" } },"properties": { "id": 8,"name": "S - 1" },"coordinates": "POINT (0.0 -4.0)" } },"properties": { "id": 9,"name": "SE - 1" },"coordinates": "POINT (2.8284 -2.8284)" } },"properties": { "id": 10,"name": "E - 2" },"coordinates": "POINT (8.0,0.0)" } },"properties": { "id": 11,"name": "NE - 2" },"coordinates": "POINT (5.6569 5.6569)" } },"properties": { "id": 12,"name": "N - 2" },"coordinates": "POINT (0.0 8.0)" } },"properties": { "id": 13,"name": "NW - 2" },"coordinates": "POINT (-5.6569 5.6569)" } },"properties": { "id": 14,"name": "W - 2" },"coordinates": "POINT (-8.0 0.0)" } },"properties": { "id": 15,"name": "SW - 2" },"coordinates": "POINT (-5.6569 -5.6569)" } },"properties": { "id": 16,"name": "S - 2" },"coordinates": "POINT (0.0 -8.0)" } },"properties": { "id": 17,"name": "SE - 2" },"coordinates": "POINT (5.6569 -5.6569)" } },"properties": { "id": 18,"name": "E - 3" },"coordinates": "POINT (12.0 0.0)" } },"properties": { "id": 19,"name": "NE - 3" },"coordinates": "POINT (8.4853 8.4853)" } },"properties": { "id": 20,"name": "N - 3" },"coordinates": "POINT (0.0 12.0)" } },"properties": { "id": 21,"name": "NW - 3" },"coordinates": "POINT (-8.4853 8.4853)" } },"properties": { "id": 22,"name": "W - 3" },"coordinates": "POINT (-12.0 0.0)" } },"properties": { "id": 23,"name": "SW - 3" },"coordinates": "POINT (-8.4853 -8.4853)" } },"properties": { "id": 24,"name": "S - 3" },"coordinates": "POINT (0.0 -12.0)" } },"properties": { "id": 25,"name": "SE - 3" },"coordinates": "POINT (8.4853 -8.4853)" } },"properties": { "id": 26,"name": "E - 4" },"coordinates": "POINT (16.0 0.0)" } },"properties": { "id": 27,"name": "NE - 4" },"coordinates": "POINT (11.3137 11.3137)" } },"properties": { "id": 28,"name": "N - 4" },"coordinates": "POINT (0.0 16.0)" } },"properties": { "id": 29,"name": "NW - 4" },"coordinates": "POINT (-11.3137 11.3137)" } },"properties": { "id": 30,"name": "W - 4" },"coordinates": "POINT (-16.0 0.0)" } },"properties": { "id": 31,"name": "SW - 4" },"coordinates": "POINT (-11.3137 -11.3137)" } },"properties": { "id": 32,"name": "S - 4" },"coordinates": "POINT (0.0 -16.0)" } },"properties": { "id": 33,"name": "SE - 4" },"coordinates": "POINT (11.3137 -11.3137)" } }
]
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。