You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Django中通过经纬度列表创建Polygon实例用于PolygonField?

实例化Polygon用于PolygonField的方法

假设你使用Django的GeoDjango框架(PolygonField是GeoDjango的字段类型),按以下步骤操作:

1. 导入依赖类

先导入GeoDjango提供的Polygon类:

from django.contrib.gis.geos import Polygon

2. 整理坐标格式

Polygon要求坐标为嵌套结构,外层是多边形的环,每个坐标是(经度, 纬度)的元组,且首尾坐标必须完全一致(保证多边形闭合)。
比如你有原始坐标列表:

raw_coords = [(116.397428, 39.90923), (116.407428, 39.90923), (116.407428, 39.91923), (116.397428, 39.91923)]

先补充闭合坐标:

# 把第一个坐标追加到列表末尾,完成闭合
raw_coords.append(raw_coords[0])

3. 创建Polygon实例

直接用整理后的坐标列表实例化:

polygon = Polygon(raw_coords)

4. 赋值给模型字段

假设你的模型定义如下:

from django.contrib.gis.db import models

class Region(models.Model):
    boundary = models.PolygonField()

创建模型实例时直接赋值即可:

region = Region(boundary=polygon)
region.save()

额外说明

  • 坐标顺序:GeoDjango默认采用WGS84坐标系(EPSG:4326),必须遵循(经度, 纬度)的顺序,不要颠倒。
  • 带洞多边形:如果需要创建带内部空洞的多边形,可传入多个环的列表,第一个为外环,后续为内环(空洞),每个环都要自行闭合:
outer_ring = [(x1,y1), (x2,y2), ..., (x1,y1)]
inner_ring = [(a1,b1), (a2,b2), ..., (a1,b1)]
polygon_with_hole = Polygon(outer_ring, inner_ring)

内容的提问来源于stack exchange,提问作者Software Dev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 06:58:22