如何解决将 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 举报,一经查实,本站将立刻删除。