Estoy repasando el tutorial de Geodjango y tratando de implementarlo en mi propio proyecto - He cargado datos de un shapefile en mi modelo/base de datos y tengo un modelo separado que tiene un PointField. Estoy tratando de encontrar todos los puntos en un área de polígono, pero no puedo entender por qué mis consultas están regresando vacío.
class Neighborhood(models.Model):
boroname = models.CharField(max_length=13)
borocode = models.IntegerField()
countyFIPS = models.CharField(max_length=3)
nta_code = models.CharField(max_length=4)
nta_name = models.CharField(max_length=75)
shape_leng = models.FloatField()
shape_area = models.FloatField()
mpoly = models.MultiPolygonField(srid=4326)
objects = models.GeoManager()
otro modelo:
class WayPoint(models.Model):
complaint = models.ForeignKey('Complaint')
geometry = models.PointField(srid=4326)
objects = models.GeoManager()
He intentado algunas cosas diferentes, incluso siguiendo las instrucciones del tutorial y escribiendo manualmente un punto que definitivamente debería devolver algo, pero todo lo que intento no devuelve nada.
En mi opinión sí:
points = WayPoint.objects.all()
for point in points:
pt = point.geometry #so this gets the PointField
pts = Neighborhood.objects.filter(mpoly__contains=pt)
...y obtengo cero resultados para cada WayPoint.
También he probado (desde el tutorial):
pnt_wkt = 'POINT(-73.3385 40.7245)'
obj = Neighborhood.objects.filter(mpoly__contains=pnt_wkt)
Nada.
He repasado el tutorial varias veces y no consigo saber qué estoy haciendo mal. Soy nuevo en el SIG y estoy teniendo problemas para tratar de resolver el problema.
En última instancia, estoy tratando de hacer un bucle y obtener todos los WayPoints en cada Barrio, que eventualmente pondré en un mapa. Pero ni siquiera puedo conseguir que ninguna de mis consultas de barrio devuelva nada.
Siento que debo estar perdiendo algo obvio aquí...
Edición: He vuelto a leer el tutorial y lo he hecho exactamente con el conjunto de datos WorldBorder y he probado mis consultas con él. Mi conjunto de datos es para los barrios de Nueva York, por lo que el punto que estoy usando que definitivamente debe devolver un polígono es un punto en Times Square. Cuando consulto el conjunto de datos de los barrios, obtengo un conjunto vacío, y el conjunto de datos mundial me devuelve al menos Estados Unidos. No entiendo por qué el conjunto de datos del barrio no devuelve nada.