Похоже, по какой-то причине свойство extrude
для этого здания равно false
. Попробуйте изменить фильтр для слоя с экструдированием зданий:
'filter': ['==', 'extrude', 'true']
// =>
'filter': ['>', 'height', 0]
У Django есть некоторые функции OLAP, которые приближаются к выпуску.
Прочитайте http://www.eflorenzano.com/blog/post/secrets-django-orm/
http://doughellmann.com/2007/12/30/using-raw-sql-in-django.html, также
Если у Вас есть надлежащий дизайн схемы "звезда" во-первых, то одномерные результаты могут иметь следующую форму.
from myapp.models import SomeFact
from collections import defaultdict
facts = SomeFact.objects.filter( dimension1__attribute=this, dimension2__attribute=that )
myAggregates = defaultdict( int )
for row in facts:
myAggregates[row.dimension3__attribute] += row.someMeasure
Если Вы хотите создать двумерную сводку, необходимо сделать что-то как следующее.
facts = SomeFact.objects.filter( dimension1__attribute=this, dimension2__attribute=that )
myAggregates = defaultdict( int )
for row in facts:
key = ( row.dimension3__attribute, row.dimension4__attribute )
myAggregates[key] += row.someMeasure
Для вычислений нескольких СУММА и КОЛИЧЕСТВО и этажерка необходимо сделать что-то вроде этого.
class MyAgg( object ):
def __init__( self ):
self.count = 0
self.thisSum= 0
self.thatSum= 0
myAggregates= defaultdict( MyAgg )
for row in facts:
myAggregates[row.dimension3__attr].count += 1
myAggregates[row.dimension3__attr].thisSum += row.this
myAggregates[row.dimension3__attr].thatSum += row.that
Это - на первый взгляд - кажется неэффективным. Вы посылаете сообщение-розыгрыш через таблицу фактов, возвращая много строк, которые Вы затем агрегировали в своем приложении.
В некоторых случаях это может быть быстрее, чем собственный компонент RDBMS sum/group_by. Почему? Вы используете простое отображение, не более сложную основанную на виде операцию группировки, которую RDBMS часто должен использовать для этого. Да, Вы получаете много строк; но Вы делаете меньше для получения их.
Это имеет недостаток, что это не таким образом декларативно, как мы хотели бы. Это имеет преимущество, что это - чистый Django ORM.
У меня была аналогичная потребность - не в полномасштабной ORM, а в простом хранилище данных типа OLAP на Python. После тщательного поиска существующих инструментов я написал этот небольшой прием:
https://github.com/kpwebb/python-cube/blob/master/src/cube.py
Даже если это не решит ваша точная потребность, это может быть хорошей отправной точкой для написания чего-то более сложного.
То же, что и kpw , я пишу свои собственные материалы, за исключением того, что они предназначены исключительно для Django: