加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

geodjango距离btw分两种型号

发布时间:2020-12-20 13:06:28 所属栏目:Python 来源:网络整理
导读:首先我需要说这是我的第一个GeoDjango任务 – 所以如果有一些“RTF”行请告诉我. 我有两个Django模型: 设施模型.对于code1和code2的组合,可以在不同位置存在少量facilityNames. from django.contrib.gis.db.models import PointField,GeoManager,Modelclass
首先我需要说这是我的第一个GeoDjango任务 – 所以如果有一些“RTF”行请告诉我.

我有两个Django模型:

设施模型.对于code1和code2的组合,可以在不同位置存在少量facilityNames.

from django.contrib.gis.db.models import PointField,GeoManager,Model

class Facility(models.Model):
    facilityName = models.CharField(max_length=255)
    code1 = models.CharField(max_length=255)
    codeName1 = models.CharField(max_length=255)
    code2 = models.CharField(max_length=255)
    codeName2 = models.CharField(max_length=255)
    point = point = PointField()

监督模式.每个设施可以有很多提交.
使用静态方法,我可以匹配code1和code2并应用正确的codeName1和codeName2.

class Supervision(models.Model):
    name = models.CharField(max_length=255)
    facilityName = models.CharField(max_length=255)
    code1 = models.CharField(max_length=255)
    codeName1 = models.CharField(max_length=255)
    code2 = models.CharField(max_length=255)
    codeName2 = models.CharField(max_length=255)
    point = models.PointFiled()

    @staticmethod
    def update_codeName1():
        for r in Facility.objects.all():
            Supervision.objects.filter(code1=r.code1).update(codeName1=r.codeName1)

    @staticmethod
    def update_codeName2():
        for r in Facility.objects.all():
            Supervision.objects.filter(code2=r.code2).update(codeName2=r.codeName2)

主要任务是使用Facility模型中的facilityName匹配和更新Supervision模型中的facilityName作为另一种静态方法.

这应该是在code1,code2和point上以较小的距离btw设施点和监督点进行查找.

任何提示,方向等最受赞赏.

谢谢,

?

更新1:
我尝试类似的东西,但我还不确定结果:

@staticmethod
for r in Supervision.objects.filter(code1Name='Default'):
    pnt = r.point
    Facility.objects.filter(code1=r.code1,code2=r.code2,point__distance_lte=(pnt,0.2))

更新2:

有一些进展,但仍需要距离()的结果最小距离是浮动ghzzz或尝试切换到米可能…

from app.models import Supervision,Facility
from django.contrib.gis.geos import GEOSGeometry
def distance():
    for r in Supervision.objects.filter(lganame='Defaul'):
        pnt_01 = GEOSGeometry(r.point.wkt,srid=4326)
        print str(pnt_01)+' SS in '+r.hf_name
        rs = Facility.objects.filter(code1=r.code1,code2=r.code2)
        for x in rs:
            pnt_02 = GEOSGeometry(x.point.wkt,srid=4326)
            print str(pnt_02)+' Facility: '+x.name+' : '+str(pnt_01.distance(pnt_02)*100)

解决方法

时间回答:

def text1():
for r in Supervision.objects.all():
    try:
        x = Facility.objects.filter(code1=r.code1,code2=r.code2).distance(r.point).order_by('distance')[:1].get()

        r.facilityName = x.facilityName
        r.save()
        print x.primary_name
    except ObjectDoesNotExist:
        print 'Does Not Exist!'
        pass

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读