本文整理汇总了Python中mapit.models.Area.parent_area_id方法的典型用法代码示例。如果您正苦于以下问题:Python Area.parent_area_id方法的具体用法?Python Area.parent_area_id怎么用?Python Area.parent_area_id使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类mapit.models.Area
的用法示例。
在下文中一共展示了Area.parent_area_id方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: handle_label
# 需要导入模块: from mapit.models import Area [as 别名]
# 或者: from mapit.models.Area import parent_area_id [as 别名]
def handle_label(self, filename, **options):
country = Country.objects.get(code='N')
oa_type = Type.objects.get(code='OUA')
soa_type = Type.objects.get(code='OLF')
name_type = NameType.objects.get(code='S')
code_type = CodeType.objects.get(code='ons')
current_generation = Generation.objects.current()
new_generation = Generation.objects.new()
if not new_generation:
raise Exception, "No new generation to be used for import!"
# Compile an alphabetical list of NI councils and their wards, OA codes
# are assigned alphabetically.
if not self.councils:
self.councils = Area.objects.filter(type=Type.objects.get(code='LGD')).order_by('name').values()
for lgd in self.councils:
lges = Area.objects.filter(parent_area=lgd['id'])
areas = []
for lge in lges:
lgws = Area.objects.filter(parent_area=lge).values()
areas += lgws
lgd['wards'] = sorted(areas, key=lambda x: x['name'])
ds = DataSource(filename)
layer = ds[0]
layer_name = str(layer)
for feat in layer:
if layer_name == 'soa':
area_type = soa_type
ons_code = feat['SOA_CODE'].value
name = feat['SOA_LABEL'].value.replace('_', ' ')
elif layer_name == 'OA_ni':
area_type = oa_type
ons_code = feat['OA_CODE'].value
name = 'Output Area %s' % ons_code
else:
raise Exception, 'Bad data passed in'
council = ord(ons_code[2:3]) - 65
ward = int(ons_code[4:6]) - 1
if ward == 98: # SOA covers two wards, set parent to council, best we can do
parent = self.councils[council]['id']
else:
parent = self.councils[council]['wards'][ward]['id']
try:
m = Area.objects.get(codes__type=code_type, codes__code=ons_code)
if int(options['verbosity']) > 1:
print " Area matched, %s" % (m, )
except Area.DoesNotExist:
print " New area: %s" % (ons_code)
m = Area(
name = name, # If committing, this will be overwritten by the m.names.update_or_create
type = area_type,
country = country,
parent_area_id = parent,
generation_low = new_generation,
generation_high = new_generation,
)
if m.generation_high and current_generation and m.generation_high.id < current_generation.id:
raise Exception, "Area %s found, but not in current generation %s" % (m, current_generation)
m.generation_high = new_generation
m.parent_area_id = parent
if options['commit']:
m.save()
f = feat.geom
f.srid = 29902
poly = [ f ]
if options['commit']:
m.names.update_or_create({ 'type': name_type }, { 'name': name })
if ons_code:
self.ons_code_to_shape[ons_code] = (m, poly)
if options['commit']:
m.codes.update_or_create({ 'type': code_type }, { 'code': ons_code })
if options['commit']:
save_polygons(self.ons_code_to_shape)