lt.geologyidea.com
Daugiau

Geodjango atstumas tarp dviejų taškų atrodo neteisingas

Geodjango atstumas tarp dviejų taškų atrodo neteisingas


We are searching data for your request:

Forums and discussions:
Manuals and reference books:
Data from registers:
Wait the end of the search in all databases.
Upon completion, a link will appear to access the found materials.


Noriu tau kai ką parodyti. Aš naudoju „django + postgis“ ir patyriau neteisingas atstumo vertes tarp dviejų taškų.

Tai mano modelis:

klasės vieta (modeliai.Modelis): pavadinimas = modeliai.CharField (max_length = 255) platuma = models.FloatField (tuščias = True, null = True, verbose_name = "Platuma") longitude = models.FloatField (blank = True, null = = Tiesa, verbose_name = "Ilguma") vieta = modeliai.PointField (tuščias = True, null = Tiesa) objektai = modeliai.GeoManager () def save (self, * args, ** kwargs): self.location = Point (self. geografinė platuma, ilgis. ilgis) super (vieta, savastis). išsaugoti (* args, ** kwargs)

Tai yra duomenys:

bogota = Vieta (vardas = 'bogota', platuma = "4.61779093242", ilguma = "- 74.0893133545") bogota.save () barranquilla = Vieta (vardas = 'barranquilla', platuma = "10.9731710819", ilguma = "- 74.8020513916" ) barranquilla.save ()

Tai yra užklausa:

ls = Location.objects.distance (pelkės vieta) .order_by ('atstumas') l ls: l.name; l.atstumas.km

Tai yra išvestis:

Išėjimas [29]: u'BOGOTA 'Išėjimas [29]: 0.0 Išėjimas [29]: u'BARRANQUILLA' Išėjimas [29]: 205.27667079004999

Bet Barankilja yra ~ 700 km nuo Bogotos miesto, žiūrėkite čia.

Taigi, kas yra negerai? SRID yra numatytosios vertės.


Skambinant buvo pakeista platumos ir ilgumos tvarka

savarankiška vieta = taškas (sav. platuma, sav. ilgis)

Taip yra todėl, kad Taškai tikisi, kad x koordinatė (ilguma) bus pirmasis argumentas.

Iš tiesų, atstumas tarp taškų platuma -74 laipsniai ir ilgumos 4,6 ir 11,0 laipsnių kampu yra maždaug 206 kilometrai.


Žiūrėti video įrašą: Paul McCartney, Beck - Find My Way Official Video