Permalink
Browse files

did rough implementation of new tiling method

  • Loading branch information...
1 parent eb97cd0 commit e567afc4d96ff214474ff6959c78aee5ba57cafa @jrasky jrasky committed Mar 15, 2012
Showing with 19,332 additions and 27 deletions.
  1. BIN example/database.db
  2. 0 example/manage.py
  3. +2 −20 geocamLayer/defaultSettings.py
  4. 0 geocamLayer/management/commands/__init__.py
  5. +42 −0 geocamLayer/management/commands/refreshdb.py
  6. +53 −0 geocamLayer/management/commands/restruct.py
  7. +7 −7 geocamLayer/models.py
  8. +874 −0 geocamLayer/static/geocamLayer/tiles/0/0/0
  9. +874 −0 geocamLayer/static/geocamLayer/tiles/0/1/0
  10. +874 −0 geocamLayer/static/geocamLayer/tiles/1/1/0
  11. +874 −0 geocamLayer/static/geocamLayer/tiles/1/1/1
  12. +874 −0 geocamLayer/static/geocamLayer/tiles/1/2/0
  13. +874 −0 geocamLayer/static/geocamLayer/tiles/1/2/1
  14. +874 −0 geocamLayer/static/geocamLayer/tiles/2/3/1
  15. +874 −0 geocamLayer/static/geocamLayer/tiles/2/3/2
  16. +874 −0 geocamLayer/static/geocamLayer/tiles/2/4/1
  17. +874 −0 geocamLayer/static/geocamLayer/tiles/2/4/2
  18. +874 −0 geocamLayer/static/geocamLayer/tiles/3/7/3
  19. +874 −0 geocamLayer/static/geocamLayer/tiles/3/7/4
  20. +874 −0 geocamLayer/static/geocamLayer/tiles/3/8/3
  21. +874 −0 geocamLayer/static/geocamLayer/tiles/3/8/4
  22. +874 −0 geocamLayer/static/geocamLayer/tiles/4/15/7
  23. +874 −0 geocamLayer/static/geocamLayer/tiles/4/15/8
  24. +874 −0 geocamLayer/static/geocamLayer/tiles/4/16/7
  25. +874 −0 geocamLayer/static/geocamLayer/tiles/4/16/8
  26. +874 −0 geocamLayer/static/geocamLayer/tiles/5/31/15
  27. +874 −0 geocamLayer/static/geocamLayer/tiles/5/31/16
  28. +874 −0 geocamLayer/static/geocamLayer/tiles/5/32/15
  29. +874 −0 geocamLayer/static/geocamLayer/tiles/5/32/16
Sorry, we could not display the entire diff because it was too big.
View
BIN example/database.db
Binary file not shown.
View
0 example/manage.py 100644 → 100755
File mode changed.
View
22 geocamLayer/defaultSettings.py
@@ -4,23 +4,5 @@
# All Rights Reserved.
# __END_LICENSE__
-"""
-This app may define some new parameters that can be modified in the
-Django settings module. Let's say one such parameter is FOO. The
-default value for FOO is defined in this file, like this:
-
- FOO = 'my default value'
-
-If the admin for the site doesn't like the default value, they can
-override it in the site-level settings module, like this:
-
- FOO = 'a better value'
-
-Other modules can access the value of FOO like this:
-
- from geocamLayer import settings
- print settings.FOO
-
-Don't try to get the value of FOO from django.conf.settings. That
-settings object will not know about the default value!
-"""
+CELLS_PER_TILE = 10
+MAX_ZOOM_LEVEL = 10
View
0 geocamLayer/management/commands/__init__.py
No changes.
View
42 geocamLayer/management/commands/refreshdb.py
@@ -0,0 +1,42 @@
+#!/usr/bin/env python
+from django.core.management.base import BaseCommand, CommandError
+from optparse import make_option
+from geocamLayer.models import *
+import sys
+
+class Command(BaseCommand):
+ args = "<num_points>"
+ help = "This command refreshed the point database"
+
+ option_list = BaseCommand.option_list + (
+ make_option('--clear',
+ action="store_true",
+ dest="clear_db",
+ default=False,
+ help="Clear database before adding new objects"
+ ),
+ )
+
+ def handle(self, *args, **options):
+ stdout = sys.stdout
+ sys.stdout = self.stdout
+ if not args:
+ print "No args found, using 1000 points"
+ numpoints = 1000
+ else:
+ try: numpoints = int(args[0])
+ except ValueError: raise CommandError("Invalid first argument")
+ if options['clear_db']:
+ print "Clearing database..."
+ for feature in RandomFeature.objects.all():
+ feature.delete()
+ print "Generating %s points..." % numpoints
+ for i in xrange(numpoints):
+ sys.stdout.write('\r')
+ sys.stdout.write(str(int((float(i)/numpoints)*100)))
+ sys.stdout.write('%')
+ sys.stdout.flush()
+ feature = RandomFeature()
+ feature.save()
+ print
+ sys.stdout = stdout
View
53 geocamLayer/management/commands/restruct.py
@@ -0,0 +1,53 @@
+#!/usr/bin/env python
+from django.core.management.base import BaseCommand, CommandError
+from geocamLayer import models
+from django.conf import settings
+import os, os.path, math
+
+try: import cPickle as pickle
+except ImportError: import pickle
+
+CELLS_PER_TILE = 10
+
+class Command(BaseCommand):
+ args = ""
+ help = "This command restructures the json data"
+
+ def handle(self, *args, **options):
+ self.stdout.write("Getting all objects...\n")
+ features = models.BaseFeature.objects.all()
+ self.stdout.write("%s objects in total\n" % len(features))
+ root = os.path.join(settings.MEDIA_ROOT, "tiles")
+ tiles = {}
+ self.stdout.write("Clustering...\n")
+ for point in features:
+ lng,lat = point.getPosition()
+ for zoom in xrange(10):
+ xf = float(lng+180)/(360./(2**(zoom+1)))
+ yf = float(lat+ 90)/(360./(2**(zoom+1)))
+ xmax = math.floor(xf)
+ ymax = math.floor(yf)
+ xmin = max(0,xmax-1)
+ ymin = max(0,ymax-1)
+ xcell = math.floor(((xf-xmax)*CELLS_PER_TILE)*2)
+ ycell = math.floor(((yf-ymax)*CELLS_PER_TILE)*2)
+ for x in range(int(xmin),int(xmax+1)):
+ tile_path = os.path.join(root, str(zoom), str(x))
+ if not os.path.exists(tile_path):
+ os.makedirs(tile_path)
+ for y in range(int(ymin),int(ymax+1)):
+ tile_file = os.path.join(tile_path, str(y))
+ if tile_file in tiles:
+ tile = tiles[tile_file]
+ elif os.path.exists(tile_file):
+ tile = pickle.load(open(tile_file, 'rb'))
+ else:
+ tile = {}
+ if (xcell,ycell) not in tile:
+ tile[(xcell,ycell)] = []
+ tile[(xcell,ycell)].append(point)
+ tiles[tile_file] = tile
+ self.stdout.write("Writing out...\n")
+ for tile_path in tiles:
+ pickle.dump(tiles[tile_path],open(tile_path,'wb'))
+ self.stdout.write("Done.\n")
View
14 geocamLayer/models.py
@@ -35,26 +35,26 @@ def getDescriptionHTML(self):
return ""
class Feature(BaseFeature):
- def __init__(self, position=(0,0), timestamp=time.time(),
+ def __init__(self, lng, lat, timestamp=time.time(),
timespan=datetime.timedelta(), name="Feature",
- description="Simple feature", properties={}, *args, **kwargs):
+ description="Simple feature", *args, **kwargs):# properties={}, *args, **kwargs):
BaseFeature.__init__(self, *args, **kwargs)
- self.lng, self.lat = position
+ self.lng, self.lat = lng,lat
self.timestamp = timestamp
self.timespan = timespan
self.name = name
self.description = description
- self.properties = properties
+ #self.properties = properties
def getPosition(self): return (self.lng,self.lat)
def getTimeStamp(self): return self.timestamp
def getTimeSpan(self): return self.timespan
def getName(self): return self.name
def getDescriptionHTML(self): return self.description
- def getProperties(self): return self.properties
+ def getProperties(self): return {} # self.properties
class RandomFeature(Feature):
def __init__(self, *args, **kwargs):
- Feature.__init__(self, (random.randint(-180,180), random.randint(-90,90)),
+ Feature.__init__(self, random.randint(-180,180), random.randint(-90,90),
time.time(), datetime.timedelta(random.randint(0,3)),
- "Random Feature", "Random Feature", {}, *args, **kwargs)
+ "Random Feature", "Random Feature", *args, **kwargs)# {}, *args, **kwargs)
View
874 geocamLayer/static/geocamLayer/tiles/0/0/0
@@ -0,0 +1,874 @@
+(dp1
+(F0
+F10
+tp2
+(lp3
+cdjango.db.models.base
+model_unpickle
+p4
+(cgeocamLayer.models
+BaseFeature
+p5
+(lcdjango.db.models.base
+simple_class_factory
+p6
+tRp7
+(dp8
+S'_state'
+p9
+ccopy_reg
+_reconstructor
+p10
+(cdjango.db.models.base
+ModelState
+p11
+c__builtin__
+object
+p12
+NtRp13
+(dp14
+S'adding'
+p15
+I00
+sS'db'
+p16
+S'default'
+p17
+sbsS'id'
+p18
+I1
+sbag4
+(g5
+(lg6
+tRp19
+(dp20
+g9
+g10
+(g11
+g12
+NtRp21
+(dp22
+g15
+I00
+sg16
+g17
+sbsg18
+I2
+sbag4
+(g5
+(lg6
+tRp23
+(dp24
+g9
+g10
+(g11
+g12
+NtRp25
+(dp26
+g15
+I00
+sg16
+g17
+sbsg18
+I3
+sbag4
+(g5
+(lg6
+tRp27
+(dp28
+g9
+g10
+(g11
+g12
+NtRp29
+(dp30
+g15
+I00
+sg16
+g17
+sbsg18
+I4
+sbag4
+(g5
+(lg6
+tRp31
+(dp32
+g9
+g10
+(g11
+g12
+NtRp33
+(dp34
+g15
+I00
+sg16
+g17
+sbsg18
+I5
+sbag4
+(g5
+(lg6
+tRp35
+(dp36
+g9
+g10
+(g11
+g12
+NtRp37
+(dp38
+g15
+I00
+sg16
+g17
+sbsg18
+I6
+sbag4
+(g5
+(lg6
+tRp39
+(dp40
+g9
+g10
+(g11
+g12
+NtRp41
+(dp42
+g15
+I00
+sg16
+g17
+sbsg18
+I7
+sbag4
+(g5
+(lg6
+tRp43
+(dp44
+g9
+g10
+(g11
+g12
+NtRp45
+(dp46
+g15
+I00
+sg16
+g17
+sbsg18
+I8
+sbag4
+(g5
+(lg6
+tRp47
+(dp48
+g9
+g10
+(g11
+g12
+NtRp49
+(dp50
+g15
+I00
+sg16
+g17
+sbsg18
+I9
+sbag4
+(g5
+(lg6
+tRp51
+(dp52
+g9
+g10
+(g11
+g12
+NtRp53
+(dp54
+g15
+I00
+sg16
+g17
+sbsg18
+I10
+sbag4
+(g5
+(lg6
+tRp55
+(dp56
+g9
+g10
+(g11
+g12
+NtRp57
+(dp58
+g15
+I00
+sg16
+g17
+sbsg18
+I11
+sbag4
+(g5
+(lg6
+tRp59
+(dp60
+g9
+g10
+(g11
+g12
+NtRp61
+(dp62
+g15
+I00
+sg16
+g17
+sbsg18
+I12
+sbag4
+(g5
+(lg6
+tRp63
+(dp64
+g9
+g10
+(g11
+g12
+NtRp65
+(dp66
+g15
+I00
+sg16
+g17
+sbsg18
+I13
+sbag4
+(g5
+(lg6
+tRp67
+(dp68
+g9
+g10
+(g11
+g12
+NtRp69
+(dp70
+g15
+I00
+sg16
+g17
+sbsg18
+I14
+sbag4
+(g5
+(lg6
+tRp71
+(dp72
+g9
+g10
+(g11
+g12
+NtRp73
+(dp74
+g15
+I00
+sg16
+g17
+sbsg18
+I15
+sbag4
+(g5
+(lg6
+tRp75
+(dp76
+g9
+g10
+(g11
+g12
+NtRp77
+(dp78
+g15
+I00
+sg16
+g17
+sbsg18
+I16
+sbag4
+(g5
+(lg6
+tRp79
+(dp80
+g9
+g10
+(g11
+g12
+NtRp81
+(dp82
+g15
+I00
+sg16
+g17
+sbsg18
+I17
+sbag4
+(g5
+(lg6
+tRp83
+(dp84
+g9
+g10
+(g11
+g12
+NtRp85
+(dp86
+g15
+I00
+sg16
+g17
+sbsg18
+I18
+sbag4
+(g5
+(lg6
+tRp87
+(dp88
+g9
+g10
+(g11
+g12
+NtRp89
+(dp90
+g15
+I00
+sg16
+g17
+sbsg18
+I19
+sbag4
+(g5
+(lg6
+tRp91
+(dp92
+g9
+g10
+(g11
+g12
+NtRp93
+(dp94
+g15
+I00
+sg16
+g17
+sbsg18
+I20
+sbag4
+(g5
+(lg6
+tRp95
+(dp96
+g9
+g10
+(g11
+g12
+NtRp97
+(dp98
+g15
+I00
+sg16
+S'default'
+p99
+sbsg18
+I1
+sbag4
+(g5
+(lg6
+tRp100
+(dp101
+g9
+g10
+(g11
+g12
+NtRp102
+(dp103
+g15
+I00
+sg16
+g99
+sbsg18
+I2
+sbag4
+(g5
+(lg6
+tRp104
+(dp105
+g9
+g10
+(g11
+g12
+NtRp106
+(dp107
+g15
+I00
+sg16
+g99
+sbsg18
+I3
+sbag4
+(g5
+(lg6
+tRp108
+(dp109
+g9
+g10
+(g11
+g12
+NtRp110
+(dp111
+g15
+I00
+sg16
+g99
+sbsg18
+I4
+sbag4
+(g5
+(lg6
+tRp112
+(dp113
+g9
+g10
+(g11
+g12
+NtRp114
+(dp115
+g15
+I00
+sg16
+g99
+sbsg18
+I5
+sbag4
+(g5
+(lg6
+tRp116
+(dp117
+g9
+g10
+(g11
+g12
+NtRp118
+(dp119
+g15
+I00
+sg16
+g99
+sbsg18
+I6
+sbag4
+(g5
+(lg6
+tRp120
+(dp121
+g9
+g10
+(g11
+g12
+NtRp122
+(dp123
+g15
+I00
+sg16
+g99
+sbsg18
+I7
+sbag4
+(g5
+(lg6
+tRp124
+(dp125
+g9
+g10
+(g11
+g12
+NtRp126
+(dp127
+g15
+I00
+sg16
+g99
+sbsg18
+I8
+sbag4
+(g5
+(lg6
+tRp128
+(dp129
+g9
+g10
+(g11
+g12
+NtRp130
+(dp131
+g15
+I00
+sg16
+g99
+sbsg18
+I9
+sbag4
+(g5
+(lg6
+tRp132
+(dp133
+g9
+g10
+(g11
+g12
+NtRp134
+(dp135
+g15
+I00
+sg16
+g99
+sbsg18
+I10
+sbag4
+(g5
+(lg6
+tRp136
+(dp137
+g9
+g10
+(g11
+g12
+NtRp138
+(dp139
+g15
+I00
+sg16
+g99
+sbsg18
+I11
+sbag4
+(g5
+(lg6
+tRp140
+(dp141
+g9
+g10
+(g11
+g12
+NtRp142
+(dp143
+g15
+I00
+sg16
+g99
+sbsg18
+I12
+sbag4
+(g5
+(lg6
+tRp144
+(dp145
+g9
+g10
+(g11
+g12
+NtRp146
+(dp147
+g15
+I00
+sg16
+g99
+sbsg18
+I13
+sbag4
+(g5
+(lg6
+tRp148
+(dp149
+g9
+g10
+(g11
+g12
+NtRp150
+(dp151
+g15
+I00
+sg16
+g99
+sbsg18
+I14
+sbag4
+(g5
+(lg6
+tRp152
+(dp153
+g9
+g10
+(g11
+g12
+NtRp154
+(dp155
+g15
+I00
+sg16
+g99
+sbsg18
+I15
+sbag4
+(g5
+(lg6
+tRp156
+(dp157
+g9
+g10
+(g11
+g12
+NtRp158
+(dp159
+g15
+I00
+sg16
+g99
+sbsg18
+I16
+sbag4
+(g5
+(lg6
+tRp160
+(dp161
+g9
+g10
+(g11
+g12
+NtRp162
+(dp163
+g15
+I00
+sg16
+g99
+sbsg18
+I17
+sbag4
+(g5
+(lg6
+tRp164
+(dp165
+g9
+g10
+(g11
+g12
+NtRp166
+(dp167
+g15
+I00
+sg16
+g99
+sbsg18
+I18
+sbag4
+(g5
+(lg6
+tRp168
+(dp169
+g9
+g10
+(g11
+g12
+NtRp170
+(dp171
+g15
+I00
+sg16
+g99
+sbsg18
+I19
+sbag4
+(g5
+(lg6
+tRp172
+(dp173
+g9
+g10
+(g11
+g12
+NtRp174
+(dp175
+g15
+I00
+sg16
+g99
+sbsg18
+I20
+sbag4
+(g5
+(lg6
+tRp176
+(dp177
+g9
+g10
+(g11
+g12
+NtRp178
+(dp179
+g15
+I00
+sg16
+g99
+sbsg18
+I21
+sbag4
+(g5
+(lg6
+tRp180
+(dp181
+g9
+g10
+(g11
+g12
+NtRp182
+(dp183
+g15
+I00
+sg16
+g99
+sbsg18
+I22
+sbag4
+(g5
+(lg6
+tRp184
+(dp185
+g9
+g10
+(g11
+g12
+NtRp186
+(dp187
+g15
+I00
+sg16
+g99
+sbsg18
+I23
+sbag4
+(g5
+(lg6
+tRp188
+(dp189
+g9
+g10
+(g11
+g12
+NtRp190
+(dp191
+g15
+I00
+sg16
+g99
+sbsg18
+I24
+sbag4
+(g5
+(lg6
+tRp192
+(dp193
+g9
+g10
+(g11
+g12
+NtRp194
+(dp195
+g15
+I00
+sg16
+g99
+sbsg18
+I25
+sbag4
+(g5
+(lg6
+tRp196
+(dp197
+g9
+g10
+(g11
+g12
+NtRp198
+(dp199
+g15
+I00
+sg16
+g99
+sbsg18
+I26
+sbag4
+(g5
+(lg6
+tRp200
+(dp201
+g9
+g10
+(g11
+g12
+NtRp202
+(dp203
+g15
+I00
+sg16
+g99
+sbsg18
+I27
+sbag4
+(g5
+(lg6
+tRp204
+(dp205
+g9
+g10
+(g11
+g12
+NtRp206
+(dp207
+g15
+I00
+sg16
+g99
+sbsg18
+I28
+sbag4
+(g5
+(lg6
+tRp208
+(dp209
+g9
+g10
+(g11
+g12
+NtRp210
+(dp211
+g15
+I00
+sg16
+g99
+sbsg18
+I29
+sbag4
+(g5
+(lg6
+tRp212
+(dp213
+g9
+g10
+(g11
+g12
+NtRp214
+(dp215
+g15
+I00
+sg16
+g99
+sbsg18
+I30
+sbas.
View
874 geocamLayer/static/geocamLayer/tiles/0/1/0
@@ -0,0 +1,874 @@
+(dp1
+(F0
+F10
+tp2
+(lp3
+cdjango.db.models.base
+model_unpickle
+p4
+(cgeocamLayer.models
+BaseFeature
+p5
+(lcdjango.db.models.base
+simple_class_factory
+p6
+tRp7
+(dp8
+S'_state'
+p9
+ccopy_reg
+_reconstructor
+p10
+(cdjango.db.models.base
+ModelState
+p11
+c__builtin__
+object
+p12
+NtRp13
+(dp14
+S'adding'
+p15
+I00
+sS'db'
+p16
+S'default'
+p17
+sbsS'id'
+p18
+I1
+sbag4
+(g5
+(lg6
+tRp19
+(dp20
+g9
+g10
+(g11
+g12
+NtRp21
+(dp22
+g15
+I00
+sg16
+g17
+sbsg18
+I2
+sbag4
+(g5
+(lg6
+tRp23
+(dp24
+g9
+g10
+(g11
+g12
+NtRp25
+(dp26
+g15
+I00
+sg16
+g17
+sbsg18
+I3
+sbag4
+(g5
+(lg6
+tRp27
+(dp28
+g9
+g10
+(g11
+g12
+NtRp29
+(dp30
+g15
+I00
+sg16
+g17
+sbsg18
+I4
+sbag4
+(g5
+(lg6
+tRp31
+(dp32
+g9
+g10
+(g11
+g12
+NtRp33
+(dp34
+g15
+I00
+sg16
+g17
+sbsg18
+I5
+sbag4
+(g5
+(lg6
+tRp35
+(dp36
+g9
+g10
+(g11
+g12
+NtRp37
+(dp38
+g15
+I00
+sg16
+g17
+sbsg18
+I6
+sbag4
+(g5
+(lg6
+tRp39
+(dp40
+g9
+g10
+(g11
+g12
+NtRp41
+(dp42
+g15
+I00
+sg16
+g17
+sbsg18
+I7
+sbag4
+(g5
+(lg6
+tRp43
+(dp44
+g9
+g10
+(g11
+g12
+NtRp45
+(dp46
+g15
+I00
+sg16
+g17
+sbsg18
+I8
+sbag4
+(g5
+(lg6
+tRp47
+(dp48
+g9
+g10
+(g11
+g12
+NtRp49
+(dp50
+g15
+I00
+sg16
+g17
+sbsg18
+I9
+sbag4
+(g5
+(lg6
+tRp51
+(dp52
+g9
+g10
+(g11
+g12
+NtRp53
+(dp54
+g15
+I00
+sg16
+g17
+sbsg18
+I10
+sbag4
+(g5
+(lg6
+tRp55
+(dp56
+g9
+g10
+(g11
+g12
+NtRp57
+(dp58
+g15
+I00
+sg16
+g17
+sbsg18
+I11
+sbag4
+(g5
+(lg6
+tRp59
+(dp60
+g9
+g10
+(g11
+g12
+NtRp61
+(dp62
+g15
+I00
+sg16
+g17
+sbsg18
+I12
+sbag4
+(g5
+(lg6
+tRp63
+(dp64
+g9
+g10
+(g11
+g12
+NtRp65
+(dp66
+g15
+I00
+sg16
+g17
+sbsg18
+I13
+sbag4
+(g5
+(lg6
+tRp67
+(dp68
+g9
+g10
+(g11
+g12
+NtRp69
+(dp70
+g15
+I00
+sg16
+g17
+sbsg18
+I14
+sbag4
+(g5
+(lg6
+tRp71
+(dp72
+g9
+g10
+(g11
+g12
+NtRp73
+(dp74
+g15
+I00
+sg16
+g17
+sbsg18
+I15
+sbag4
+(g5
+(lg6
+tRp75
+(dp76
+g9
+g10
+(g11
+g12
+NtRp77
+(dp78
+g15
+I00
+sg16
+g17
+sbsg18
+I16
+sbag4
+(g5
+(lg6
+tRp79
+(dp80
+g9
+g10
+(g11
+g12
+NtRp81
+(dp82
+g15
+I00
+sg16
+g17
+sbsg18
+I17
+sbag4
+(g5
+(lg6
+tRp83
+(dp84
+g9
+g10
+(g11
+g12
+NtRp85
+(dp86
+g15
+I00
+sg16
+g17
+sbsg18
+I18
+sbag4
+(g5
+(lg6
+tRp87
+(dp88
+g9
+g10
+(g11
+g12
+NtRp89
+(dp90
+g15
+I00
+sg16
+g17
+sbsg18
+I19
+sbag4
+(g5
+(lg6
+tRp91
+(dp92
+g9
+g10
+(g11
+g12
+NtRp93
+(dp94
+g15
+I00
+sg16
+g17
+sbsg18
+I20
+sbag4
+(g5
+(lg6
+tRp95
+(dp96
+g9
+g10
+(g11
+g12
+NtRp97
+(dp98
+g15
+I00
+sg16
+S'default'
+p99
+sbsg18
+I1
+sbag4
+(g5
+(lg6
+tRp100
+(dp101
+g9
+g10
+(g11
+g12
+NtRp102
+(dp103
+g15
+I00
+sg16
+g99
+sbsg18
+I2
+sbag4
+(g5
+(lg6
+tRp104
+(dp105
+g9
+g10
+(g11
+g12
+NtRp106
+(dp107
+g15
+I00
+sg16
+g99
+sbsg18
+I3
+sbag4
+(g5
+(lg6
+tRp108
+(dp109
+g9
+g10
+(g11
+g12
+NtRp110
+(dp111
+g15
+I00
+sg16
+g99
+sbsg18
+I4
+sbag4
+(g5
+(lg6
+tRp112
+(dp113
+g9
+g10
+(g11
+g12
+NtRp114
+(dp115
+g15
+I00
+sg16
+g99
+sbsg18
+I5
+sbag4
+(g5
+(lg6
+tRp116
+(dp117
+g9
+g10
+(g11
+g12
+NtRp118
+(dp119
+g15
+I00
+sg16
+g99
+sbsg18
+I6
+sbag4
+(g5
+(lg6
+tRp120
+(dp121
+g9
+g10
+(g11
+g12
+NtRp122
+(dp123
+g15
+I00
+sg16
+g99
+sbsg18
+I7
+sbag4
+(g5
+(lg6
+tRp124
+(dp125
+g9
+g10
+(g11
+g12
+NtRp126
+(dp127
+g15
+I00
+sg16
+g99
+sbsg18
+I8
+sbag4
+(g5
+(lg6
+tRp128
+(dp129
+g9
+g10
+(g11
+g12
+NtRp130
+(dp131
+g15
+I00
+sg16
+g99
+sbsg18
+I9
+sbag4
+(g5
+(lg6
+tRp132
+(dp133
+g9
+g10
+(g11
+g12
+NtRp134
+(dp135
+g15
+I00
+sg16
+g99
+sbsg18
+I10
+sbag4
+(g5
+(lg6
+tRp136
+(dp137
+g9
+g10
+(g11
+g12
+NtRp138
+(dp139
+g15
+I00
+sg16
+g99
+sbsg18
+I11
+sbag4
+(g5
+(lg6
+tRp140
+(dp141
+g9
+g10
+(g11
+g12
+NtRp142
+(dp143
+g15
+I00
+sg16
+g99
+sbsg18
+I12
+sbag4
+(g5
+(lg6
+tRp144
+(dp145
+g9
+g10
+(g11
+g12
+NtRp146
+(dp147
+g15
+I00
+sg16
+g99
+sbsg18
+I13
+sbag4
+(g5
+(lg6
+tRp148
+(dp149
+g9
+g10
+(g11
+g12
+NtRp150
+(dp151
+g15
+I00
+sg16
+g99
+sbsg18
+I14
+sbag4
+(g5
+(lg6
+tRp152
+(dp153
+g9
+g10
+(g11
+g12
+NtRp154
+(dp155
+g15
+I00
+sg16
+g99
+sbsg18
+I15
+sbag4
+(g5
+(lg6
+tRp156
+(dp157
+g9
+g10
+(g11
+g12
+NtRp158
+(dp159
+g15
+I00
+sg16
+g99
+sbsg18
+I16
+sbag4
+(g5
+(lg6
+tRp160
+(dp161
+g9
+g10
+(g11
+g12
+NtRp162
+(dp163
+g15
+I00
+sg16
+g99
+sbsg18
+I17
+sbag4
+(g5
+(lg6
+tRp164
+(dp165
+g9
+g10
+(g11
+g12
+NtRp166
+(dp167
+g15
+I00
+sg16
+g99
+sbsg18
+I18
+sbag4
+(g5
+(lg6
+tRp168
+(dp169
+g9
+g10
+(g11
+g12
+NtRp170
+(dp171
+g15
+I00
+sg16
+g99
+sbsg18
+I19
+sbag4
+(g5
+(lg6
+tRp172
+(dp173
+g9
+g10
+(g11
+g12
+NtRp174
+(dp175
+g15
+I00
+sg16
+g99
+sbsg18
+I20
+sbag4
+(g5
+(lg6
+tRp176
+(dp177
+g9
+g10
+(g11
+g12
+NtRp178
+(dp179
+g15
+I00
+sg16
+g99
+sbsg18
+I21
+sbag4
+(g5
+(lg6
+tRp180
+(dp181
+g9
+g10
+(g11
+g12
+NtRp182
+(dp183
+g15
+I00
+sg16
+g99
+sbsg18
+I22
+sbag4
+(g5
+(lg6
+tRp184
+(dp185
+g9
+g10
+(g11
+g12
+NtRp186
+(dp187
+g15
+I00
+sg16
+g99
+sbsg18
+I23
+sbag4
+(g5
+(lg6
+tRp188
+(dp189
+g9
+g10
+(g11
+g12
+NtRp190
+(dp191
+g15
+I00
+sg16
+g99
+sbsg18
+I24
+sbag4
+(g5
+(lg6
+tRp192
+(dp193
+g9
+g10
+(g11
+g12
+NtRp194
+(dp195
+g15
+I00
+sg16
+g99
+sbsg18
+I25
+sbag4
+(g5
+(lg6
+tRp196
+(dp197
+g9
+g10
+(g11
+g12
+NtRp198
+(dp199
+g15
+I00
+sg16
+g99
+sbsg18
+I26
+sbag4
+(g5
+(lg6
+tRp200
+(dp201
+g9
+g10
+(g11
+g12
+NtRp202
+(dp203
+g15
+I00
+sg16
+g99
+sbsg18
+I27
+sbag4
+(g5
+(lg6
+tRp204
+(dp205
+g9
+g10
+(g11
+g12
+NtRp206
+(dp207
+g15
+I00
+sg16
+g99
+sbsg18
+I28
+sbag4
+(g5
+(lg6
+tRp208
+(dp209
+g9
+g10
+(g11
+g12
+NtRp210
+(dp211
+g15
+I00
+sg16
+g99
+sbsg18
+I29
+sbag4
+(g5
+(lg6
+tRp212
+(dp213
+g9
+g10
+(g11
+g12
+NtRp214
+(dp215
+g15
+I00
+sg16
+g99
+sbsg18
+I30
+sbas.
View
874 geocamLayer/static/geocamLayer/tiles/1/1/0
@@ -0,0 +1,874 @@
+(dp1
+(F0
+F0
+tp2
+(lp3
+cdjango.db.models.base
+model_unpickle
+p4
+(cgeocamLayer.models
+BaseFeature
+p5
+(lcdjango.db.models.base
+simple_class_factory
+p6
+tRp7
+(dp8
+S'_state'
+p9
+ccopy_reg
+_reconstructor
+p10
+(cdjango.db.models.base
+ModelState
+p11
+c__builtin__
+object
+p12
+NtRp13
+(dp14
+S'adding'
+p15
+I00
+sS'db'
+p16
+S'default'
+p17
+sbsS'id'
+p18
+I1
+sbag4
+(g5
+(lg6
+tRp19
+(dp20
+g9
+g10
+(g11
+g12
+NtRp21
+(dp22
+g15
+I00
+sg16
+g17
+sbsg18
+I2
+sbag4
+(g5
+(lg6
+tRp23
+(dp24
+g9
+g10
+(g11
+g12
+NtRp25
+(dp26
+g15
+I00
+sg16
+g17
+sbsg18
+I3
+sbag4
+(g5
+(lg6
+tRp27
+(dp28
+g9
+g10
+(g11
+g12
+NtRp29
+(dp30
+g15
+I00
+sg16
+g17
+sbsg18
+I4
+sbag4
+(g5
+(lg6
+tRp31
+(dp32
+g9
+g10
+(g11
+g12
+NtRp33
+(dp34
+g15
+I00
+sg16
+g17
+sbsg18
+I5
+sbag4
+(g5
+(lg6
+tRp35
+(dp36
+g9
+g10
+(g11
+g12
+NtRp37
+(dp38
+g15
+I00
+sg16
+g17
+sbsg18
+I6
+sbag4
+(g5
+(lg6
+tRp39
+(dp40
+g9
+g10
+(g11
+g12
+NtRp41
+(dp42
+g15
+I00
+sg16
+g17
+sbsg18
+I7
+sbag4
+(g5
+(lg6
+tRp43
+(dp44
+g9
+g10
+(g11
+g12
+NtRp45
+(dp46
+g15
+I00
+sg16
+g17
+sbsg18
+I8
+sbag4
+(g5
+(lg6
+tRp47
+(dp48
+g9
+g10
+(g11
+g12
+NtRp49
+(dp50
+g15
+I00
+sg16
+g17
+sbsg18
+I9
+sbag4
+(g5
+(lg6
+tRp51
+(dp52
+g9
+g10
+(g11
+g12
+NtRp53
+(dp54
+g15
+I00
+sg16
+g17
+sbsg18
+I10
+sbag4
+(g5
+(lg6
+tRp55
+(dp56
+g9
+g10
+(g11
+g12
+NtRp57
+(dp58
+g15
+I00
+sg16
+g17
+sbsg18
+I11
+sbag4
+(g5
+(lg6
+tRp59
+(dp60
+g9
+g10
+(g11
+g12
+NtRp61
+(dp62
+g15
+I00
+sg16
+g17
+sbsg18
+I12
+sbag4
+(g5
+(lg6
+tRp63
+(dp64
+g9
+g10
+(g11
+g12
+NtRp65
+(dp66
+g15
+I00
+sg16
+g17
+sbsg18
+I13
+sbag4
+(g5
+(lg6
+tRp67
+(dp68
+g9
+g10
+(g11
+g12
+NtRp69
+(dp70
+g15
+I00
+sg16
+g17
+sbsg18
+I14
+sbag4
+(g5
+(lg6
+tRp71
+(dp72
+g9
+g10
+(g11
+g12
+NtRp73
+(dp74
+g15
+I00
+sg16
+g17
+sbsg18
+I15
+sbag4
+(g5
+(lg6
+tRp75
+(dp76
+g9
+g10
+(g11
+g12
+NtRp77
+(dp78
+g15
+I00
+sg16
+g17
+sbsg18
+I16
+sbag4
+(g5
+(lg6
+tRp79
+(dp80
+g9
+g10
+(g11
+g12
+NtRp81
+(dp82
+g15
+I00
+sg16
+g17
+sbsg18
+I17
+sbag4
+(g5
+(lg6
+tRp83
+(dp84
+g9
+g10
+(g11
+g12
+NtRp85
+(dp86
+g15
+I00
+sg16
+g17
+sbsg18
+I18
+sbag4
+(g5
+(lg6
+tRp87
+(dp88
+g9
+g10
+(g11
+g12
+NtRp89
+(dp90
+g15
+I00
+sg16
+g17
+sbsg18
+I19
+sbag4
+(g5
+(lg6
+tRp91
+(dp92
+g9
+g10
+(g11
+g12
+NtRp93
+(dp94
+g15
+I00
+sg16
+g17
+sbsg18
+I20
+sbag4
+(g5
+(lg6
+tRp95
+(dp96
+g9
+g10
+(g11
+g12
+NtRp97
+(dp98
+g15
+I00
+sg16
+S'default'
+p99
+sbsg18
+I1
+sbag4
+(g5
+(lg6
+tRp100
+(dp101
+g9
+g10
+(g11
+g12
+NtRp102
+(dp103
+g15
+I00
+sg16
+g99
+sbsg18
+I2
+sbag4
+(g5
+(lg6
+tRp104
+(dp105
+g9
+g10
+(g11
+g12
+NtRp106
+(dp107
+g15
+I00
+sg16
+g99
+sbsg18
+I3
+sbag4
+(g5
+(lg6
+tRp108
+(dp109
+g9
+g10
+(g11
+g12
+NtRp110
+(dp111
+g15
+I00
+sg16
+g99
+sbsg18
+I4
+sbag4
+(g5
+(lg6
+tRp112
+(dp113
+g9
+g10
+(g11
+g12
+NtRp114
+(dp115
+g15
+I00
+sg16
+g99
+sbsg18
+I5
+sbag4
+(g5
+(lg6
+tRp116
+(dp117
+g9
+g10
+(g11
+g12
+NtRp118
+(dp119
+g15
+I00
+sg16
+g99
+sbsg18
+I6
+sbag4
+(g5
+(lg6
+tRp120
+(dp121
+g9
+g10
+(g11
+g12
+NtRp122
+(dp123
+g15
+I00
+sg16
+g99
+sbsg18
+I7
+sbag4
+(g5
+(lg6
+tRp124
+(dp125
+g9
+g10
+(g11
+g12
+NtRp126
+(dp127
+g15
+I00
+sg16
+g99
+sbsg18
+I8
+sbag4
+(g5
+(lg6
+tRp128
+(dp129
+g9
+g10
+(g11
+g12
+NtRp130
+(dp131
+g15
+I00
+sg16
+g99
+sbsg18
+I9
+sbag4
+(g5
+(lg6
+tRp132
+(dp133
+g9
+g10
+(g11
+g12
+NtRp134
+(dp135
+g15
+I00
+sg16
+g99
+sbsg18
+I10
+sbag4
+(g5
+(lg6
+tRp136
+(dp137
+g9
+g10
+(g11
+g12
+NtRp138
+(dp139
+g15
+I00
+sg16
+g99
+sbsg18
+I11
+sbag4
+(g5
+(lg6
+tRp140
+(dp141
+g9
+g10
+(g11
+g12
+NtRp142
+(dp143
+g15
+I00
+sg16
+g99
+sbsg18
+I12
+sbag4
+(g5
+(lg6
+tRp144
+(dp145
+g9
+g10
+(g11
+g12
+NtRp146
+(dp147
+g15
+I00
+sg16
+g99
+sbsg18
+I13
+sbag4
+(g5
+(lg6
+tRp148
+(dp149
+g9
+g10
+(g11
+g12
+NtRp150
+(dp151
+g15
+I00
+sg16
+g99
+sbsg18
+I14
+sbag4
+(g5
+(lg6
+tRp152
+(dp153
+g9
+g10
+(g11
+g12
+NtRp154
+(dp155
+g15
+I00
+sg16
+g99
+sbsg18
+I15
+sbag4
+(g5
+(lg6
+tRp156
+(dp157
+g9
+g10
+(g11
+g12
+NtRp158
+(dp159
+g15
+I00
+sg16
+g99
+sbsg18
+I16
+sbag4
+(g5
+(lg6
+tRp160
+(dp161
+g9
+g10
+(g11
+g12
+NtRp162
+(dp163
+g15
+I00
+sg16
+g99
+sbsg18
+I17
+sbag4
+(g5
+(lg6
+tRp164
+(dp165
+g9
+g10
+(g11
+g12
+NtRp166
+(dp167
+g15
+I00
+sg16
+g99
+sbsg18
+I18
+sbag4
+(g5
+(lg6
+tRp168
+(dp169
+g9
+g10
+(g11
+g12
+NtRp170
+(dp171
+g15
+I00
+sg16
+g99
+sbsg18
+I19
+sbag4
+(g5
+(lg6
+tRp172
+(dp173
+g9
+g10
+(g11
+g12
+NtRp174
+(dp175
+g15
+I00
+sg16
+g99
+sbsg18
+I20
+sbag4
+(g5
+(lg6
+tRp176
+(dp177
+g9
+g10
+(g11
+g12
+NtRp178
+(dp179
+g15
+I00
+sg16
+g99
+sbsg18
+I21
+sbag4
+(g5
+(lg6
+tRp180
+(dp181
+g9
+g10
+(g11
+g12
+NtRp182
+(dp183
+g15
+I00
+sg16
+g99
+sbsg18
+I22
+sbag4
+(g5
+(lg6
+tRp184
+(dp185
+g9
+g10
+(g11
+g12
+NtRp186
+(dp187
+g15
+I00
+sg16
+g99
+sbsg18
+I23
+sbag4
+(g5
+(lg6
+tRp188
+(dp189
+g9
+g10
+(g11
+g12
+NtRp190
+(dp191
+g15
+I00
+sg16
+g99
+sbsg18
+I24
+sbag4
+(g5
+(lg6
+tRp192
+(dp193
+g9
+g10
+(g11
+g12
+NtRp194
+(dp195
+g15
+I00
+sg16
+g99
+sbsg18
+I25
+sbag4
+(g5
+(lg6
+tRp196
+(dp197
+g9
+g10
+(g11
+g12
+NtRp198
+(dp199
+g15
+I00
+sg16
+g99
+sbsg18
+I26
+sbag4
+(g5
+(lg6
+tRp200
+(dp201
+g9
+g10
+(g11
+g12
+NtRp202
+(dp203
+g15
+I00
+sg16
+g99
+sbsg18
+I27
+sbag4
+(g5
+(lg6
+tRp204
+(dp205
+g9
+g10
+(g11
+g12
+NtRp206
+(dp207
+g15
+I00
+sg16
+g99
+sbsg18
+I28
+sbag4
+(g5
+(lg6
+tRp208
+(dp209
+g9
+g10
+(g11
+g12
+NtRp210
+(dp211
+g15
+I00
+sg16
+g99
+sbsg18
+I29
+sbag4
+(g5
+(lg6
+tRp212
+(dp213
+g9
+g10
+(g11
+g12
+NtRp214
+(dp215
+g15
+I00
+sg16
+g99
+sbsg18
+I30
+sbas.
View
874 geocamLayer/static/geocamLayer/tiles/1/1/1
@@ -0,0 +1,874 @@
+(dp1
+(F0
+F0
+tp2
+(lp3
+cdjango.db.models.base
+model_unpickle
+p4
+(cgeocamLayer.models
+BaseFeature
+p5
+(lcdjango.db.models.base
+simple_class_factory
+p6
+tRp7
+(dp8
+S'_state'
+p9
+ccopy_reg
+_reconstructor
+p10
+(cdjango.db.models.base
+ModelState
+p11
+c__builtin__
+object
+p12
+NtRp13
+(dp14
+S'adding'
+p15
+I00
+sS'db'
+p16
+S'default'
+p17
+sbsS'id'
+p18
+I1
+sbag4
+(g5
+(lg6
+tRp19
+(dp20
+g9
+g10
+(g11
+g12
+NtRp21
+(dp22
+g15
+I00
+sg16
+g17
+sbsg18
+I2
+sbag4
+(g5
+(lg6
+tRp23
+(dp24
+g9
+g10
+(g11
+g12
+NtRp25
+(dp26
+g15
+I00
+sg16
+g17
+sbsg18
+I3
+sbag4
+(g5
+(lg6
+tRp27
+(dp28
+g9
+g10
+(g11
+g12
+NtRp29
+(dp30
+g15
+I00
+sg16
+g17
+sbsg18
+I4
+sbag4
+(g5
+(lg6
+tRp31
+(dp32
+g9
+g10
+(g11
+g12
+NtRp33
+(dp34
+g15
+I00
+sg16
+g17
+sbsg18
+I5
+sbag4
+(g5
+(lg6
+tRp35
+(dp36
+g9