Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def reader(file, ignore_duplicate_keys=False):
return CityJSON(file=file, ignore_duplicate_keys=ignore_duplicate_keys)
cm["type"] = "CityJSON"
cm["version"] = "0.6"
cm["CityObjects"] = {}
cm["vertices"] = []
for v in lstVertices:
cm["vertices"].append(v)
g = {'type': 'Solid'}
shell = []
for f in lstFaces:
shell.append([f])
g['boundaries'] = [shell]
g['lod'] = 1
o = {'type': 'GenericCityObject'}
o['geometry'] = [g]
cm["CityObjects"]["id-1"] = o
return CityJSON(j=cm)
def get_subset_ids(self, lsIDs, exclude=False):
#-- new sliced CityJSON object
cm2 = CityJSON()
cm2.j["version"] = self.j["version"]
cm2.path = self.path
if "transform" in self.j:
cm2.j["transform"] = self.j["transform"]
#-- copy selected CO to the j2
re = subset.select_co_ids(self.j, lsIDs)
if exclude == True:
allkeys = set(self.j["CityObjects"].keys())
re = allkeys ^ re
for each in re:
cm2.j["CityObjects"][each] = self.j["CityObjects"][each]
#-- geometry
subset.process_geometry(self.j, cm2.j)
#-- templates
subset.process_templates(self.j, cm2.j)
#-- appearance
def get_subset_bbox(self, bbox, exclude=False):
# print ('get_subset_bbox')
#-- new sliced CityJSON object
cm2 = CityJSON()
cm2.j["version"] = self.j["version"]
cm2.path = self.path
if "transform" in self.j:
cm2.j["transform"] = self.j["transform"]
re = set()
for coid in self.j["CityObjects"]:
centroid = self.get_centroid(coid)
if ((centroid is not None) and
(centroid[0] >= bbox[0]) and
(centroid[1] >= bbox[1]) and
(centroid[0] < bbox[2]) and
(centroid[1] < bbox[3]) ):
re.add(coid)
re2 = copy.deepcopy(re)
if exclude == True:
allkeys = set(self.j["CityObjects"].keys())
def get_subset_cotype(self, cotype, exclude=False):
# print ('get_subset_cotype')
lsCOtypes = [cotype]
if cotype == 'Building':
lsCOtypes.append('BuildingInstallation')
lsCOtypes.append('BuildingPart')
if cotype == 'Bridge':
lsCOtypes.append('BridgePart')
lsCOtypes.append('BridgeInstallation')
lsCOtypes.append('BridgeConstructionElement')
if cotype == 'Tunnel':
lsCOtypes.append('TunnelInstallation')
lsCOtypes.append('TunnelPart')
#-- new sliced CityJSON object
cm2 = CityJSON()
cm2.j["version"] = self.j["version"]
cm2.path = self.path
if "transform" in self.j:
cm2.j["transform"] = self.j["transform"]
#-- copy selected CO to the j2
for theid in self.j["CityObjects"]:
if exclude == False:
if self.j["CityObjects"][theid]["type"] in lsCOtypes:
cm2.j["CityObjects"][theid] = self.j["CityObjects"][theid]
else:
if self.j["CityObjects"][theid]["type"] not in lsCOtypes:
cm2.j["CityObjects"][theid] = self.j["CityObjects"][theid]
#-- geometry
subset.process_geometry(self.j, cm2.j)
#-- templates
subset.process_templates(self.j, cm2.j)
cm["type"] = "CityJSON"
cm["version"] = "0.6"
cm["CityObjects"] = {}
cm["vertices"] = []
for v in lstVertices:
cm["vertices"].append(v)
g = {'type': 'Solid'}
shell = []
for f in lstFaces:
shell.append(f)
g['boundaries'] = [shell]
g['lod'] = 1
o = {'type': 'GenericCityObject'}
o['geometry'] = [g]
cm["CityObjects"]["id-1"] = o
return CityJSON(j=cm)