Merge remote-tracking branch 'origin/feature/cmm_project' into feature/cmm_project
# Conflicts: # crs_conversion.py # hub/city_model_structure/building.py # hub/imports/geometry/geojson.py # hub/imports/geometry_factory.py # hub/imports/results/archetype_based_demand.py # main.py # pv_assessment/electricity_demand_calculator.py # pv_assessment/pv_system_assessment.py # random_assignation.py
This commit is contained in:
commit
960f638e88
@ -2,23 +2,17 @@ import geopandas as gpd
|
||||
from shapely.geometry import Polygon, MultiPolygon
|
||||
from shapely.geometry.polygon import orient
|
||||
|
||||
# Path to the input GeoJSON file
|
||||
input_file = 'data/cmm_test.geojson'
|
||||
input_file = 'data/selected_buildings.geojson'
|
||||
|
||||
# Path to the output GeoJSON file
|
||||
output_file = 'data/cmm_test_corrected.geojson'
|
||||
output_file = 'data/selected_buildings_corrected.geojson'
|
||||
|
||||
# Read the GeoJSON file
|
||||
gdf = gpd.read_file(input_file)
|
||||
|
||||
# Set the CRS to EPSG:3857 if not already set
|
||||
if gdf.crs is None:
|
||||
gdf.set_crs(epsg=3857, inplace=True)
|
||||
|
||||
# Convert the CRS to EPSG:4326 (longitude and latitude)
|
||||
gdf = gdf.to_crs(epsg=4326)
|
||||
|
||||
# Function to reorient geometries to follow the right-hand rule
|
||||
def reorient_geometry(geom):
|
||||
if geom.is_empty:
|
||||
return geom
|
||||
@ -30,10 +24,6 @@ def reorient_geometry(geom):
|
||||
else:
|
||||
return geom
|
||||
|
||||
# Apply the reorientation to the geometry column
|
||||
gdf['geometry'] = gdf['geometry'].apply(reorient_geometry)
|
||||
|
||||
# Save the transformed GeoDataFrame to a new GeoJSON file
|
||||
gdf.to_file(output_file, driver='GeoJSON')
|
||||
|
||||
print(f"Converted GeoJSON with right-hand rule orientation has been saved to {output_file}")
|
||||
|
52
data/selected_buildings.geojson
Normal file
52
data/selected_buildings.geojson
Normal file
@ -0,0 +1,52 @@
|
||||
{
|
||||
"type": "FeatureCollection",
|
||||
"crs": { "type": "name", "properties": { "name": "urn:ogc:def:crs:OGC:1.3:CRS84" } },
|
||||
"features": [
|
||||
{ "type": "Feature", "properties": { "cerc_id": 10042222, "provinc_id": "66058923687536920000000", "matricu_18": "923687536920000000", "feature_id": "1750228c-42f7-432c-bf99-86164e74e465", "contr_year": "1955", "height": 10.0, "function_c": 1000.0, "function_n": "Résidentiel", "adjacency": "detached", "lot_name": "1561273", "lot_area": 421.4, "build_area": 181.0, "build_type": "1", "floor_num": 2, "unit_num": 1, "region": "layer_83", "g_objectid": 1268569.0, "g_co_mrc": "66023", "g_code_mun": "66058", "g_nb_locau": 0.0 }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -73.652847091532934, 45.470789538971239 ], [ -73.652887196872726, 45.470740637941198 ], [ -73.652726589698347, 45.470675341143156 ], [ -73.652651101233815, 45.470767235562192 ], [ -73.652766698497217, 45.470814235766937 ], [ -73.65280209652326, 45.470771133385092 ], [ -73.652847091532934, 45.470789538971239 ] ] ] ] } },
|
||||
{ "type": "Feature", "properties": { "cerc_id": 10042223, "provinc_id": "66058923687465550000000", "matricu_18": "923687465550000000", "feature_id": "54fe98c5-2500-425c-981a-736b1a8cfa2a", "contr_year": "1955", "height": 8.0, "function_c": 1000.0, "function_n": "Résidentiel", "adjacency": "detached", "lot_name": "1561274", "lot_area": 409.2, "build_area": 184.4, "build_type": "1", "floor_num": 2, "unit_num": 1, "region": "layer_83", "g_objectid": 3069480.0, "g_co_mrc": "66023", "g_code_mun": "66058", "g_nb_locau": 0.0 }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -73.652747295978074, 45.470643337350687 ], [ -73.652909100761292, 45.470707438418266 ], [ -73.652950294053596, 45.470656535546446 ], [ -73.652904898103273, 45.470638340201873 ], [ -73.652941089903379, 45.470593737565963 ], [ -73.652823598674004, 45.470547139602402 ], [ -73.652747295978074, 45.470643337350687 ] ] ] ] } },
|
||||
{ "type": "Feature", "properties": { "cerc_id": 10042224, "provinc_id": "66058923687618360000000", "matricu_18": "923687618360000000", "feature_id": "2aa8756a-afd6-42ec-a962-e8c5c996fd7d", "contr_year": "1955", "height": 7.0, "function_c": 1000.0, "function_n": "Résidentiel", "adjacency": "detached", "lot_name": "1561272", "lot_area": 421.4, "build_area": 179.7, "build_type": "1", "floor_num": 2, "unit_num": 1, "region": "layer_83", "g_objectid": 3462523.0, "g_co_mrc": "66023", "g_code_mun": "66058", "g_nb_locau": 0.0 }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -73.652709790904126, 45.47096133445153 ], [ -73.652749501241331, 45.470911939982749 ], [ -73.652702295654493, 45.470893340246995 ], [ -73.652737089123505, 45.470850340376927 ], [ -73.652622996634648, 45.470805534661345 ], [ -73.652549690921319, 45.470900733936617 ], [ -73.652709790904126, 45.47096133445153 ] ] ] ] } },
|
||||
{ "type": "Feature", "properties": { "cerc_id": 10042330, "provinc_id": "66058923677831460000000", "matricu_18": "923677831460000000", "feature_id": "156062b2-f371-4410-90d6-09a5739307f6", "contr_year": "1955", "height": 7.0, "function_c": 1000.0, "function_n": "Résidentiel", "adjacency": "detached", "lot_name": "1561290", "lot_area": 421.4, "build_area": 186.7, "build_type": "1", "floor_num": 2, "unit_num": 1, "region": "layer_83", "g_objectid": 604572.0, "g_co_mrc": "66023", "g_code_mun": "66058", "g_nb_locau": 0.0 }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -73.653605989751256, 45.470315136029505 ], [ -73.653679197919615, 45.470344039669897 ], [ -73.653768500755149, 45.470231636424167 ], [ -73.653634388908017, 45.470178936397076 ], [ -73.653569990580365, 45.470259932850226 ], [ -73.653631497883566, 45.470284132547583 ], [ -73.653605989751256, 45.470315136029505 ] ] ] ] } },
|
||||
{ "type": "Feature", "properties": { "cerc_id": 10042331, "provinc_id": "66058923677970620000000", "matricu_18": "923677970620000000", "feature_id": "c37d9815-fc5d-4c33-adc8-106266ee1bfd", "contr_year": "1955", "height": 7.0, "function_c": 1000.0, "function_n": "Résidentiel", "adjacency": "detached", "lot_name": "1561291", "lot_area": 421.4, "build_area": 186.7, "build_type": "1", "floor_num": 2, "unit_num": 1, "region": "layer_83", "g_objectid": 3484657.0, "g_co_mrc": "66023", "g_code_mun": "66058", "g_nb_locau": 0.0 }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -73.653443793018795, 45.470106935668554 ], [ -73.653359900353067, 45.470219640947249 ], [ -73.653429792557731, 45.470245432125495 ], [ -73.653451292051685, 45.470217038228604 ], [ -73.653516390055771, 45.470242036728898 ], [ -73.653581298430908, 45.470157635493926 ], [ -73.653443793018795, 45.470106935668554 ] ] ] ] } },
|
||||
{ "type": "Feature", "properties": { "cerc_id": 10042635, "provinc_id": "66058923677254770000000", "matricu_18": "923677254770000000", "feature_id": "4ce656c8-ce53-426c-a843-60ab97cdb3b8", "contr_year": "1955", "height": 9.0, "function_c": 1000.0, "function_n": "Résidentiel", "adjacency": "detached", "lot_name": "1561286", "lot_area": 421.4, "build_area": 186.7, "build_type": "1", "floor_num": 2, "unit_num": 1, "region": "layer_83", "g_objectid": 575398.0, "g_co_mrc": "66023", "g_code_mun": "66058", "g_nb_locau": 0.0 }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -73.654309901222945, 45.470545036155421 ], [ -73.654369890444571, 45.470568536522997 ], [ -73.654345291899205, 45.470599538939211 ], [ -73.65441879851538, 45.470628337318551 ], [ -73.654512194744015, 45.47051053517287 ], [ -73.654449200628335, 45.470485835845707 ], [ -73.654462197967533, 45.470469334851281 ], [ -73.654433893608768, 45.470458336483141 ], [ -73.65441859446058, 45.470477738997204 ], [ -73.654376293669245, 45.470461134583637 ], [ -73.654309901222945, 45.470545036155421 ] ] ] ] } },
|
||||
{ "type": "Feature", "properties": { "cerc_id": 10042636, "provinc_id": "66058923677115430000000", "matricu_18": "923677115430000000", "feature_id": "b4e089b6-49f8-4c42-be7b-e62ea44b40c0", "contr_year": "1955", "height": 7.0, "function_c": 1000.0, "function_n": "Résidentiel", "adjacency": "semi-detached", "lot_name": "1561285", "lot_area": 366.8, "build_area": 181.9, "build_type": "2", "floor_num": 2, "unit_num": 1, "region": "layer_83", "g_objectid": 2079549.0, "g_co_mrc": "66023", "g_code_mun": "66058", "g_nb_locau": 0.0 }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -73.654474602084335, 45.470646733951 ], [ -73.65454600053863, 45.470674835917094 ], [ -73.654567994828625, 45.470646533827093 ], [ -73.654620690452504, 45.470667185113932 ], [ -73.654687518212597, 45.470580770397603 ], [ -73.654565394231369, 45.470532632760083 ], [ -73.654474602084335, 45.470646733951 ] ] ] ] } },
|
||||
{ "type": "Feature", "properties": { "cerc_id": 10043720, "provinc_id": "66058923668865690000000", "matricu_18": "923668865690000000", "feature_id": "56140dca-5192-43d2-8e8f-8b20c0040103", "contr_year": "1955", "height": 7.0, "function_c": 1000.0, "function_n": "Résidentiel", "adjacency": "semi-detached", "lot_name": "1561245", "lot_area": 351.2, "build_area": 188.7, "build_type": "2", "floor_num": 2, "unit_num": 1, "region": "layer_83", "g_objectid": 3072728.0, "g_co_mrc": "66023", "g_code_mun": "66058", "g_nb_locau": 0.0 }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -73.655000390259502, 45.471538937399444 ], [ -73.654976201996107, 45.471529740477251 ], [ -73.655002101287067, 45.471495940337249 ], [ -73.654833194115412, 45.471432437671524 ], [ -73.654794998416136, 45.471482837737675 ], [ -73.654833892614178, 45.471497434550578 ], [ -73.654808676852682, 45.471530547142002 ], [ -73.65494021136027, 45.471582045277302 ], [ -73.654951290564128, 45.471567940428017 ], [ -73.654971595977315, 45.471575740660001 ], [ -73.655000390259502, 45.471538937399444 ] ] ] ] } },
|
||||
{ "type": "Feature", "properties": { "cerc_id": 10043737, "provinc_id": "66058923687765600000000", "matricu_18": "923687765600000000", "feature_id": "c1c56abc-490b-4c53-91ee-6a65882c02f0", "contr_year": "1955", "height": 8.0, "function_c": 1000.0, "function_n": "Résidentiel", "adjacency": "detached", "lot_name": "1561279", "lot_area": 422.8, "build_area": 194.3, "build_type": "1", "floor_num": 2, "unit_num": 1, "region": "layer_83", "g_objectid": 426945.0, "g_co_mrc": "66023", "g_code_mun": "66058", "g_nb_locau": 0.0 }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -73.652377898069957, 45.47066073256552 ], [ -73.652491698483658, 45.470707437596616 ], [ -73.652528591770533, 45.470662934038636 ], [ -73.652564495254012, 45.470677737185767 ], [ -73.652582000674897, 45.470656231728007 ], [ -73.652540393489758, 45.47063963650681 ], [ -73.652568999478362, 45.470603736652329 ], [ -73.652405595822898, 45.470551637610889 ], [ -73.652365892713107, 45.470601833718348 ], [ -73.652409198577573, 45.470617135454596 ], [ -73.652377898069957, 45.47066073256552 ] ] ] ] } },
|
||||
{ "type": "Feature", "properties": { "cerc_id": 10043738, "provinc_id": "66058923687622220000000", "matricu_18": "923687622220000000", "feature_id": "3f5276ec-ad3c-48ee-9168-f427a9b3121d", "contr_year": "1955", "height": 10.0, "function_c": 1000.0, "function_n": "Résidentiel", "adjacency": "detached", "lot_name": "1561277", "lot_area": 422.1, "build_area": 181.9, "build_type": "1", "floor_num": 2, "unit_num": 1, "region": "layer_83", "g_objectid": 2072159.0, "g_co_mrc": "66023", "g_code_mun": "66058", "g_nb_locau": 0.0 }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -73.652682194918924, 45.470397941292759 ], [ -73.652767990333388, 45.470284536588274 ], [ -73.652694395553326, 45.470256238478278 ], [ -73.652669992839861, 45.470288536954968 ], [ -73.652608194216455, 45.470265235177678 ], [ -73.652546193182943, 45.470347037712962 ], [ -73.652682194918924, 45.470397941292759 ] ] ] ] } },
|
||||
{ "type": "Feature", "properties": { "cerc_id": 10043739, "provinc_id": "66058923687684350000000", "matricu_18": "923687684350000000", "feature_id": "f4d1865c-b04a-4cbd-8e7c-01883cbf8430", "contr_year": "1955", "height": 8.0, "function_c": 1000.0, "function_n": "Résidentiel", "adjacency": "detached", "lot_name": "1561278", "lot_area": 407.9, "build_area": 194.3, "build_type": "1", "floor_num": 2, "unit_num": 1, "region": "layer_83", "g_objectid": 2564351.0, "g_co_mrc": "66023", "g_code_mun": "66058", "g_nb_locau": 0.0 }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -73.65242779386287, 45.470516936839878 ], [ -73.652588789856551, 45.47058253858895 ], [ -73.652665896524738, 45.470488940432411 ], [ -73.6525446903279, 45.470439439736488 ], [ -73.652507391368388, 45.470484738409013 ], [ -73.652467799420805, 45.470468437420209 ], [ -73.65242779386287, 45.470516936839878 ] ] ] ] } },
|
||||
{ "type": "Feature", "properties": { "cerc_id": 10043740, "provinc_id": "66058923687473140000000", "matricu_18": "923687473140000000", "feature_id": "98755cb0-ab11-40dd-9585-a4796de152bb", "contr_year": "1955", "height": 8.0, "function_c": 1000.0, "function_n": "Résidentiel", "adjacency": "detached", "lot_name": "1561276", "lot_area": 468.2, "build_area": 179.2, "build_type": "1", "floor_num": 2, "unit_num": 1, "region": "layer_83", "g_objectid": 3421553.0, "g_co_mrc": "66023", "g_code_mun": "66058", "g_nb_locau": 0.0 }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -73.652744990388442, 45.470422335911962 ], [ -73.652878699588598, 45.47047473427105 ], [ -73.652966895020114, 45.470363135801364 ], [ -73.652893894189305, 45.470334636358771 ], [ -73.652870691368861, 45.470364639558653 ], [ -73.652809495889926, 45.470340739584152 ], [ -73.652744990388442, 45.470422335911962 ] ] ] ] } },
|
||||
{ "type": "Feature", "properties": { "cerc_id": 10043915, "provinc_id": "66058923668794320000000", "matricu_18": "923668794320000000", "feature_id": "54e13aab-5c28-4a5b-8b04-84416a66bd8d", "contr_year": "1955", "height": 7.0, "function_c": 1000.0, "function_n": "Résidentiel", "adjacency": "semi-detached", "lot_name": "1561246", "lot_area": 351.2, "build_area": 184.4, "build_type": "2", "floor_num": 0, "unit_num": 1, "region": "layer_83", "g_objectid": 1032833.0, "g_co_mrc": "66023", "g_code_mun": "66058", "g_nb_locau": 0.0 }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -73.65502879476135, 45.471462137313608 ], [ -73.65510579333538, 45.471364204902599 ], [ -73.654980539200722, 45.471315665234386 ], [ -73.654942190526796, 45.471363836634637 ], [ -73.654902797420775, 45.471348238104071 ], [ -73.654863696987903, 45.471397936639484 ], [ -73.65502879476135, 45.471462137313608 ] ] ] ] } },
|
||||
{ "type": "Feature", "properties": { "cerc_id": 10043999, "provinc_id": "66058923687847130000000", "matricu_18": "923687847130000000", "feature_id": "c319d1cb-a096-4b1a-b551-e206566b44f8", "contr_year": "1955", "height": 8.0, "function_c": 1000.0, "function_n": "Résidentiel", "adjacency": "detached", "lot_name": "1561280", "lot_area": 423.3, "build_area": 194.3, "build_type": "1", "floor_num": 2, "unit_num": 1, "region": "layer_83", "g_objectid": 2648595.0, "g_co_mrc": "66023", "g_code_mun": "66058", "g_nb_locau": 0.0 }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -73.652237589070779, 45.470775335345522 ], [ -73.652390499710066, 45.470833634180686 ], [ -73.652458391332928, 45.470745333270067 ], [ -73.652342591262382, 45.470701235033637 ], [ -73.652309396508116, 45.470744334335826 ], [ -73.652272398907328, 45.47073023534864 ], [ -73.652237589070779, 45.470775335345522 ] ] ] ] } },
|
||||
{ "type": "Feature", "properties": { "cerc_id": 10044210, "provinc_id": "66058923678380310000000", "matricu_18": "923678380310000000", "feature_id": "6cbd0310-aae5-47c4-80a3-d2f76cf2c937", "contr_year": "1955", "height": 7.0, "function_c": 1000.0, "function_n": "Résidentiel", "adjacency": "semi-detached", "lot_name": "1561255", "lot_area": 390.1, "build_area": 181.9, "build_type": "2", "floor_num": 2, "unit_num": 1, "region": "layer_83", "g_objectid": 972036.0, "g_co_mrc": "66023", "g_code_mun": "66058", "g_nb_locau": 0.0 }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -73.654273794664334, 45.471091137092834 ], [ -73.654349437965422, 45.470993054041529 ], [ -73.654226789315018, 45.470945493557068 ], [ -73.654189800598729, 45.4709930374772 ], [ -73.654150296214866, 45.470977733086684 ], [ -73.654110894469554, 45.471028238938018 ], [ -73.654273794664334, 45.471091137092834 ] ] ] ] } },
|
||||
{ "type": "Feature", "properties": { "cerc_id": 10044211, "provinc_id": "66058923678161510000000", "matricu_18": "923678161510000000", "feature_id": "b6b13e9c-1aa6-40eb-98b3-cc9d78d3cdd6", "contr_year": "1955", "height": 7.0, "function_c": 1000.0, "function_n": "Résidentiel", "adjacency": "semi-detached", "lot_name": "1561252", "lot_area": 390.1, "build_area": 184.4, "build_type": "2", "floor_num": 2, "unit_num": 1, "region": "layer_83", "g_objectid": 1239371.0, "g_co_mrc": "66023", "g_code_mun": "66058", "g_nb_locau": 0.0 }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -73.654590597199189, 45.471148033612579 ], [ -73.654628130965548, 45.471101125918594 ], [ -73.654513780671437, 45.471056783164684 ], [ -73.654436291825164, 45.471153840292544 ], [ -73.654596390395241, 45.471217132307771 ], [ -73.654636901158298, 45.471166335938058 ], [ -73.654590597199189, 45.471148033612579 ] ] ] ] } },
|
||||
{ "type": "Feature", "properties": { "cerc_id": 10044212, "provinc_id": "66058923678461740000000", "matricu_18": "923678461740000000", "feature_id": "13439744-342a-473c-888e-4a438b367918", "contr_year": "1955", "height": 10.0, "function_c": 1000.0, "function_n": "Résidentiel", "adjacency": "semi-detached", "lot_name": "1561256", "lot_area": 390.2, "build_area": 191.7, "build_type": "2", "floor_num": 2, "unit_num": 1, "region": "layer_83", "g_objectid": 2301619.0, "g_co_mrc": "66023", "g_code_mun": "66058", "g_nb_locau": 0.0 }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -73.654031196457751, 45.471136639557891 ], [ -73.654059889234489, 45.471146933819433 ], [ -73.654032942866309, 45.471183835136578 ], [ -73.654163546309576, 45.471234481468947 ], [ -73.65422669384283, 45.471148233970347 ], [ -73.654065200116378, 45.471089940174615 ], [ -73.654031196457751, 45.471136639557891 ] ] ] ] } },
|
||||
{ "type": "Feature", "properties": { "cerc_id": 10044213, "provinc_id": "66058923677318970000000", "matricu_18": "923677318970000000", "feature_id": "6cbd0310-aae5-47c4-80a3-d2f76cf2c937", "contr_year": "1955", "height": 7.0, "function_c": 1000.0, "function_n": "Résidentiel", "adjacency": "semi-detached", "lot_name": "1561254", "lot_area": 385.8, "build_area": 180.5, "build_type": "2", "floor_num": 2, "unit_num": 1, "region": "layer_83", "g_objectid": 3061137.0, "g_co_mrc": "66023", "g_code_mun": "66058", "g_nb_locau": 0.0 }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -73.654214896814992, 45.470894940846435 ], [ -73.654254298540138, 45.4709101337723 ], [ -73.654226789315018, 45.470945493557068 ], [ -73.654349437965422, 45.470993054041529 ], [ -73.65441369154685, 45.470909736646639 ], [ -73.654251995269064, 45.470847336479324 ], [ -73.654214896814992, 45.470894940846435 ] ] ] ] } },
|
||||
{ "type": "Feature", "properties": { "cerc_id": 10044221, "provinc_id": "66058923676679500000000", "matricu_18": "923676679500000000", "feature_id": "da284366-dbbc-4733-ba40-8f3df72eba77", "contr_year": "1960", "height": 9.0, "function_c": 1000.0, "function_n": "Résidentiel", "adjacency": "semi-detached", "lot_name": "1561525", "lot_area": 338.9, "build_area": 224.2, "build_type": "2", "floor_num": 2, "unit_num": 1, "region": "layer_83", "g_objectid": 774848.0, "g_co_mrc": "66023", "g_code_mun": "66058", "g_nb_locau": 0.0 }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -73.653749352276677, 45.470095004041376 ], [ -73.653903102189417, 45.470156339416491 ], [ -73.653990099147322, 45.470048432942882 ], [ -73.653833231779103, 45.469985805200686 ], [ -73.653749352276677, 45.470095004041376 ] ] ] ] } },
|
||||
{ "type": "Feature", "properties": { "cerc_id": 10044222, "provinc_id": "66058923677381160000000", "matricu_18": "923677381160000000", "feature_id": "f8c64e08-3c4b-44d5-ab0e-8f2a4ea9b154", "contr_year": "1956", "height": 7.0, "function_c": 1000.0, "function_n": "Résidentiel", "adjacency": "detached", "lot_name": "1561500", "lot_area": 403.6, "build_area": 226.8, "build_type": "1", "floor_num": 2, "unit_num": 1, "region": "layer_83", "g_objectid": 1458855.0, "g_co_mrc": "66023", "g_code_mun": "66058", "g_nb_locau": 0.0 }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -73.654370090632497, 45.470188833588637 ], [ -73.654209598243682, 45.470130039218276 ], [ -73.654138300832201, 45.470226434511275 ], [ -73.654298794724468, 45.470285237977279 ], [ -73.654370090632497, 45.470188833588637 ] ] ] ] } },
|
||||
{ "type": "Feature", "properties": { "cerc_id": 10044833, "provinc_id": "66058923687313910000000", "matricu_18": "923687313910000000", "feature_id": "64d949d2-6102-49b7-96e6-8577083b0edc", "contr_year": "1955", "height": 8.0, "function_c": 1000.0, "function_n": "Résidentiel", "adjacency": "detached", "lot_name": "1561275", "lot_area": 421.4, "build_area": 186.7, "build_type": "1", "floor_num": 2, "unit_num": 1, "region": "layer_83", "g_objectid": 2957818.0, "g_co_mrc": "66023", "g_code_mun": "66058", "g_nb_locau": 0.0 }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -73.652925197637231, 45.470491440701977 ], [ -73.653055998525844, 45.470541336669136 ], [ -73.653117592376589, 45.47046143758471 ], [ -73.653059898345532, 45.470440838193731 ], [ -73.653086697989821, 45.470404434914023 ], [ -73.653013797140815, 45.470376533813322 ], [ -73.652925197637231, 45.470491440701977 ] ] ] ] } },
|
||||
{ "type": "Feature", "properties": { "cerc_id": 10045659, "provinc_id": "66058923667764630000000", "matricu_18": "923667764630000000", "feature_id": "cbe2e8c9-2379-4afe-9a76-9b32aada7782", "contr_year": "1955", "height": 8.0, "function_c": 1000.0, "function_n": "Résidentiel", "adjacency": "detached", "lot_name": "1561504", "lot_area": 524.3, "build_area": 224.1, "build_type": "1", "floor_num": 2, "unit_num": 1, "region": "layer_83", "g_objectid": 318123.0, "g_co_mrc": "66023", "g_code_mun": "66058", "g_nb_locau": 0.0 }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -73.655148200995669, 45.470498338611812 ], [ -73.654991893972763, 45.470432034024839 ], [ -73.654906892082153, 45.470531036350238 ], [ -73.655063299294213, 45.470597435400443 ], [ -73.655148200995669, 45.470498338611812 ] ] ] ] } },
|
||||
{ "type": "Feature", "properties": { "cerc_id": 10045660, "provinc_id": "66058923667866940000000", "matricu_18": "923667866940000000", "feature_id": "2e57e522-c883-4df6-886d-d9ce5b21ff3b", "contr_year": "1955", "height": 7.0, "function_c": 1000.0, "function_n": "Résidentiel", "adjacency": "semi-detached", "lot_name": "1561283", "lot_area": 366.8, "build_area": 124.6, "build_type": "2", "floor_num": 2, "unit_num": 1, "region": "layer_83", "g_objectid": 1038210.0, "g_co_mrc": "66023", "g_code_mun": "66058", "g_nb_locau": 0.0 }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -73.654868197231835, 45.470796336171801 ], [ -73.65488510239112, 45.470771238981378 ], [ -73.654942400269036, 45.470790186765306 ], [ -73.655008962606558, 45.470704115064933 ], [ -73.654891193528343, 45.470653436094814 ], [ -73.654794495507687, 45.470764638136217 ], [ -73.654868197231835, 45.470796336171801 ] ] ] ] } },
|
||||
{ "type": "Feature", "properties": { "cerc_id": 10045661, "provinc_id": "66058923667923790000000", "matricu_18": "923667923790000000", "feature_id": "59ecfefc-ffe9-4c03-ab59-3aad5238c0ff", "contr_year": "1957", "height": 7.0, "function_c": 1000.0, "function_n": "Résidentiel", "adjacency": "detached", "lot_name": "1561503", "lot_area": 403.6, "build_area": 213.0, "build_type": "1", "floor_num": 2, "unit_num": 1, "region": "layer_83", "g_objectid": 1551652.0, "g_co_mrc": "66023", "g_code_mun": "66058", "g_nb_locau": 0.0 }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -73.654959699979329, 45.470414835711097 ], [ -73.654800800141757, 45.470353339568668 ], [ -73.654726598493937, 45.470448134731456 ], [ -73.654885499823777, 45.4705096408724 ], [ -73.654959699979329, 45.470414835711097 ] ] ] ] } },
|
||||
{ "type": "Feature", "properties": { "cerc_id": 10046229, "provinc_id": "66058923688162340000000", "matricu_18": "923688162340000000", "feature_id": "6b10c1b5-7dd3-4eb0-9cf1-d37b562afd08", "contr_year": "1955", "height": 8.0, "function_c": 1000.0, "function_n": "Résidentiel", "adjacency": "detached", "lot_name": "1561265", "lot_area": 468.2, "build_area": 181.9, "build_type": "1", "floor_num": 2, "unit_num": 1, "region": "layer_83", "g_objectid": 640821.0, "g_co_mrc": "66023", "g_code_mun": "66058", "g_nb_locau": 0.0 }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -73.653177488929643, 45.47129324081115 ], [ -73.653251693991763, 45.471317732328437 ], [ -73.65332899735516, 45.471201433904078 ], [ -73.653190701191122, 45.471158532928456 ], [ -73.653143192802858, 45.471236041159678 ], [ -73.653203294770762, 45.471257635207799 ], [ -73.653177488929643, 45.47129324081115 ] ] ] ] } },
|
||||
{ "type": "Feature", "properties": { "cerc_id": 10046230, "provinc_id": "66058923688013190000000", "matricu_18": "923688013190000000", "feature_id": "1e15f0bc-2c56-4ad4-b7b7-e2dded5e0354", "contr_year": "1955", "height": 9.0, "function_c": 1000.0, "function_n": "Résidentiel", "adjacency": "detached", "lot_name": "1561264", "lot_area": 421.4, "build_area": 181.9, "build_type": "1", "floor_num": 2, "unit_num": 1, "region": "layer_83", "g_objectid": 1677189.0, "g_co_mrc": "66023", "g_code_mun": "66058", "g_nb_locau": 0.0 }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -73.653398601110396, 45.471335434917606 ], [ -73.653461195683434, 45.471360236140249 ], [ -73.653525598981588, 45.471279139874326 ], [ -73.653392296535372, 45.471226740833735 ], [ -73.653303293667534, 45.471338839214397 ], [ -73.653373995844191, 45.471366635995906 ], [ -73.653398601110396, 45.471335434917606 ] ] ] ] } },
|
||||
{ "type": "Feature", "properties": { "cerc_id": 10046595, "provinc_id": "66058923678951060000000", "matricu_18": "923678951060000000", "feature_id": "2462ebab-6ea3-45b9-b9f9-69f463961077", "contr_year": "1955", "height": 8.0, "function_c": 1000.0, "function_n": "Résidentiel", "adjacency": "detached", "lot_name": "1561263", "lot_area": 413.6, "build_area": 181.8, "build_type": "1", "floor_num": 2, "unit_num": 1, "region": "layer_83", "g_objectid": 6139.0, "g_co_mrc": "66023", "g_code_mun": "66058", "g_nb_locau": 0.0 }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -73.653599290793167, 45.471153238441815 ], [ -73.653640489069332, 45.471106632993028 ], [ -73.653489396367107, 45.471040340939979 ], [ -73.653410995239696, 45.471128932827199 ], [ -73.65352389317566, 45.471178439265429 ], [ -73.653561396878132, 45.47113614008488 ], [ -73.653599290793167, 45.471153238441815 ] ] ] ] } },
|
||||
{ "type": "Feature", "properties": { "cerc_id": 10047487, "provinc_id": "66058923678007910000000", "matricu_18": "923678007910000000", "feature_id": "4e83bafb-706f-4c80-852d-ccaf9025bcf1", "contr_year": "1955", "height": 9.0, "function_c": 1000.0, "function_n": "Résidentiel", "adjacency": "semi-detached", "lot_name": "1561242", "lot_area": 351.2, "build_area": 179.5, "build_type": "2", "floor_num": 2, "unit_num": 1, "region": "layer_83", "g_objectid": 1294990.0, "g_co_mrc": "66023", "g_code_mun": "66058", "g_nb_locau": 0.0 }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -73.654628499533743, 45.471698939492192 ], [ -73.65467030104854, 45.471714532155794 ], [ -73.65464392616839, 45.471748974454762 ], [ -73.654768424435602, 45.471797265354809 ], [ -73.654833699615367, 45.471712337422993 ], [ -73.654666993333919, 45.471648938612546 ], [ -73.654628499533743, 45.471698939492192 ] ] ] ] } },
|
||||
{ "type": "Feature", "properties": { "cerc_id": 10047488, "provinc_id": "66058923668869730000000", "matricu_18": "923668869730000000", "feature_id": "491fc9f1-ef33-4236-96c1-b2899feb8e31", "contr_year": "1955", "height": 7.0, "function_c": 1000.0, "function_n": "Résidentiel", "adjacency": "semi-detached", "lot_name": "1561241", "lot_area": 390.2, "build_area": 186.7, "build_type": "2", "floor_num": 2, "unit_num": 1, "region": "layer_83", "g_objectid": 2726812.0, "g_co_mrc": "66023", "g_code_mun": "66058", "g_nb_locau": 0.0 }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -73.654826995210016, 45.47192293884126 ], [ -73.654898799955831, 45.471950236465652 ], [ -73.65491769273595, 45.471925533413163 ], [ -73.654968595623302, 45.471944898383917 ], [ -73.655035189732317, 45.471859206378547 ], [ -73.654912090321673, 45.471812334732739 ], [ -73.654826995210016, 45.47192293884126 ] ] ] ] } },
|
||||
{ "type": "Feature", "properties": { "cerc_id": 10047490, "provinc_id": "66058923668936720000000", "matricu_18": "923668936720000000", "feature_id": "56140dca-5192-43d2-8e8f-8b20c0040103", "contr_year": "1955", "height": 7.0, "function_c": 1000.0, "function_n": "Résidentiel", "adjacency": "semi-detached", "lot_name": "1561244", "lot_area": 351.2, "build_area": 179.5, "build_type": "2", "floor_num": 2, "unit_num": 1, "region": "layer_83", "g_objectid": 12148.0, "g_co_mrc": "66023", "g_code_mun": "66058", "g_nb_locau": 0.0 }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -73.65486409822843, 45.471678939747548 ], [ -73.65494021136027, 45.471582045277302 ], [ -73.654808676852682, 45.471530547142002 ], [ -73.654771599294008, 45.47157923597279 ], [ -73.654741898987638, 45.471568235975077 ], [ -73.654703894599507, 45.471616635388195 ], [ -73.65486409822843, 45.471678939747548 ] ] ] ] } },
|
||||
{ "type": "Feature", "properties": { "cerc_id": 10047542, "provinc_id": "66058923677072930000000", "matricu_18": "923677072930000000", "feature_id": "dcefc5d5-80cd-4712-819d-65ad395a8277", "contr_year": "1956", "height": 8.0, "function_c": 1000.0, "function_n": "Résidentiel", "adjacency": "detached", "lot_name": "1561502", "lot_area": 403.6, "build_area": 205.4, "build_type": "1", "floor_num": 2, "unit_num": 1, "region": "layer_83", "g_objectid": 822699.0, "g_co_mrc": "66023", "g_code_mun": "66058", "g_nb_locau": 0.0 }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -73.654609901467467, 45.470277535740024 ], [ -73.654533689954604, 45.470376839939142 ], [ -73.654689893996945, 45.470436139974673 ], [ -73.654765991211093, 45.470336733244544 ], [ -73.654609901467467, 45.470277535740024 ] ] ] ] } },
|
||||
{ "type": "Feature", "properties": { "cerc_id": 10048023, "provinc_id": "66058923686276230000000", "matricu_18": "923686276230000000", "feature_id": "d842964d-21bb-4c89-8801-2d8d0821b35e", "contr_year": "1956", "height": 7.0, "function_c": 1000.0, "function_n": "Résidentiel", "adjacency": "detached", "lot_name": "1561517", "lot_area": 488.9, "build_area": 264.6, "build_type": "1", "floor_num": 2, "unit_num": 1, "region": "layer_83", "g_objectid": 1098046.0, "g_co_mrc": "66023", "g_code_mun": "66058", "g_nb_locau": 0.0 }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -73.652972600121103, 45.4697924389774 ], [ -73.653162591448009, 45.469869435464908 ], [ -73.653252095092611, 45.469760240303586 ], [ -73.653151089007039, 45.469721637300829 ], [ -73.653138093657759, 45.469737534347296 ], [ -73.653047697218526, 45.469700735622339 ], [ -73.652972600121103, 45.4697924389774 ] ] ] ] } },
|
||||
{ "type": "Feature", "properties": { "cerc_id": 10048024, "provinc_id": "66058923686097120000000", "matricu_18": "923686097120000000", "feature_id": "ef766114-0166-4782-b14b-4d688b40e6ba", "contr_year": "1957", "height": 7.0, "function_c": 1000.0, "function_n": "Résidentiel", "adjacency": "detached", "lot_name": "1561518", "lot_area": 437.8, "build_area": 239.8, "build_type": "1", "floor_num": 2, "unit_num": 1, "region": "layer_83", "g_objectid": 3414305.0, "g_co_mrc": "66023", "g_code_mun": "66058", "g_nb_locau": 0.0 }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -73.65320148899599, 45.46987733706186 ], [ -73.653390900036641, 45.469941035988434 ], [ -73.653456795924569, 45.469844041016181 ], [ -73.653267397899739, 45.46978033318188 ], [ -73.65320148899599, 45.46987733706186 ] ] ] ] } },
|
||||
{ "type": "Feature", "properties": { "cerc_id": 10048056, "provinc_id": "66058923678385510000000", "matricu_18": "923678385510000000", "feature_id": "f9c3f49c-8316-48da-aee8-c694e3100c15", "contr_year": "1955", "height": 7.0, "function_c": 1000.0, "function_n": "Résidentiel", "adjacency": "semi-detached", "lot_name": "1561248", "lot_area": 390.2, "build_area": 179.5, "build_type": "2", "floor_num": 2, "unit_num": 1, "region": "layer_83", "g_objectid": 866768.0, "g_co_mrc": "66023", "g_code_mun": "66058", "g_nb_locau": 0.0 }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -73.654195894862454, 45.471452735553861 ], [ -73.654132940050715, 45.471535693826077 ], [ -73.654255943268993, 45.471583392504201 ], [ -73.65428210112988, 45.471549038772054 ], [ -73.654325100176081, 45.471565337225492 ], [ -73.654362999996195, 45.471515537915721 ], [ -73.654195894862454, 45.471452735553861 ] ] ] ] } },
|
||||
{ "type": "Feature", "properties": { "cerc_id": 10048057, "provinc_id": "66058923678314240000000", "matricu_18": "923678314240000000", "feature_id": "9b00ca80-cd65-4c1c-9978-8d71137b1f41", "contr_year": "1955", "height": 6.0, "function_c": 1000.0, "function_n": "Résidentiel", "adjacency": "semi-detached", "lot_name": "1561250", "lot_area": 390.2, "build_area": 179.5, "build_type": "2", "floor_num": 2, "unit_num": 1, "region": "layer_83", "g_objectid": 1009896.0, "g_co_mrc": "66023", "g_code_mun": "66058", "g_nb_locau": 0.0 }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -73.654408296870102, 45.471391636003418 ], [ -73.654444985099204, 45.471343619102058 ], [ -73.654319022207275, 45.471294771918565 ], [ -73.654305293248498, 45.47131273883528 ], [ -73.654277197771222, 45.471302036197777 ], [ -73.65426009299928, 45.471324441219934 ], [ -73.654231901150482, 45.471314041050405 ], [ -73.654228998674441, 45.471342436976329 ], [ -73.654266997700333, 45.4713529345835 ], [ -73.654237694155384, 45.471392132843746 ], [ -73.654408193732877, 45.471456438702106 ], [ -73.654446594386556, 45.47140603758811 ], [ -73.654408296870102, 45.471391636003418 ] ] ] ] } },
|
||||
{ "type": "Feature", "properties": { "cerc_id": 10048058, "provinc_id": "66058923678614390000000", "matricu_18": "923678614390000000", "feature_id": "e1e96159-caf8-4bde-9ed9-2feb13af3f7e", "contr_year": "1955", "height": 7.0, "function_c": 1000.0, "function_n": "Résidentiel", "adjacency": "semi-detached", "lot_name": "1561258", "lot_area": 390.2, "build_area": 181.5, "build_type": "2", "floor_num": 2, "unit_num": 1, "region": "layer_83", "g_objectid": 1581180.0, "g_co_mrc": "66023", "g_code_mun": "66058", "g_nb_locau": 0.0 }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -73.6538797952892, 45.471393333618082 ], [ -73.653852942513012, 45.471427114991805 ], [ -73.653978234423178, 45.471475701736814 ], [ -73.654043796576445, 45.471392532167933 ], [ -73.653876689475865, 45.471327333044968 ], [ -73.653837591744193, 45.471376940340981 ], [ -73.6538797952892, 45.471393333618082 ] ] ] ] } },
|
||||
{ "type": "Feature", "properties": { "cerc_id": 10048059, "provinc_id": "66058923678466950000000", "matricu_18": "923678466950000000", "feature_id": "f9c3f49c-8316-48da-aee8-c694e3100c15", "contr_year": "1955", "height": 8.0, "function_c": 1000.0, "function_n": "Résidentiel", "adjacency": "semi-detached", "lot_name": "1561249", "lot_area": 390.2, "build_area": 184.4, "build_type": "2", "floor_num": 2, "unit_num": 1, "region": "layer_83", "g_objectid": 3545809.0, "g_co_mrc": "66023", "g_code_mun": "66058", "g_nb_locau": 0.0 }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -73.654223201570275, 45.471697537446317 ], [ -73.65425999115395, 45.471649038151568 ], [ -73.654217991000237, 45.47163323864077 ], [ -73.654255943268993, 45.471583392504201 ], [ -73.654132940050715, 45.471535693826077 ], [ -73.654057401941927, 45.471635236136279 ], [ -73.654223201570275, 45.471697537446317 ] ] ] ] } },
|
||||
{ "type": "Feature", "properties": { "cerc_id": 10048672, "provinc_id": "66058923676948060000000", "matricu_18": "923676948060000000", "feature_id": "8699acea-8dfb-46cd-87b8-55484ce2ac5d", "contr_year": "1957", "height": 7.0, "function_c": 1000.0, "function_n": "Résidentiel", "adjacency": "detached", "lot_name": "1561519", "lot_area": 406.7, "build_area": 216.8, "build_type": "1", "floor_num": 2, "unit_num": 1, "region": "layer_83", "g_objectid": 2395365.0, "g_co_mrc": "66023", "g_code_mun": "66058", "g_nb_locau": 0.0 }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -73.653415688843594, 45.469952735820264 ], [ -73.653584096878546, 45.470016436536504 ], [ -73.653658691277286, 45.469918837653061 ], [ -73.6534902962361, 45.469855136128402 ], [ -73.653415688843594, 45.469952735820264 ] ] ] ] } },
|
||||
{ "type": "Feature", "properties": { "cerc_id": 10048785, "provinc_id": "66058923687026990000000", "matricu_18": "923687026990000000", "feature_id": "0052248e-9fd9-4f2e-8852-e4af9d8e5d5c", "contr_year": "1955", "height": 8.0, "function_c": 1000.0, "function_n": "Résidentiel", "adjacency": "detached", "lot_name": "1561269", "lot_area": 421.4, "build_area": 179.4, "build_type": "1", "floor_num": 0, "unit_num": 1, "region": "layer_83", "g_objectid": 1578936.0, "g_co_mrc": "66023", "g_code_mun": "66058", "g_nb_locau": 0.0 }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -73.653331593451014, 45.470769336837492 ], [ -73.653448793775809, 45.470816335999849 ], [ -73.653524298033417, 45.470722232805706 ], [ -73.653363499570148, 45.470658333724451 ], [ -73.653320890341547, 45.470709037979645 ], [ -73.653365898169085, 45.470726938529602 ], [ -73.653331593451014, 45.470769336837492 ] ] ] ] } },
|
||||
{ "type": "Feature", "properties": { "cerc_id": 10048960, "provinc_id": "66058923669730520000000", "matricu_18": "923669730520000000", "feature_id": "491fc9f1-ef33-4236-96c1-b2899feb8e31", "contr_year": "1955", "height": 7.0, "function_c": 1000.0, "function_n": "Résidentiel", "adjacency": "semi-detached", "lot_name": "1561239", "lot_area": 428.3, "build_area": 186.7, "build_type": "2", "floor_num": 2, "unit_num": 1, "region": "layer_83", "g_objectid": 1218879.0, "g_co_mrc": "66023", "g_code_mun": "66058", "g_nb_locau": 0.0 }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -73.65516999374239, 45.471910534236727 ], [ -73.655035189732317, 45.471859206378547 ], [ -73.654968595623302, 45.471944898383917 ], [ -73.655031000644058, 45.471968638080085 ], [ -73.655008097006856, 45.471998437933863 ], [ -73.655080991705489, 45.47202623877903 ], [ -73.65516999374239, 45.471910534236727 ] ] ] ] } },
|
||||
{ "type": "Feature", "properties": { "cerc_id": 10049152, "provinc_id": "66058923688311420000000", "matricu_18": "923688311420000000", "feature_id": "e0cd772e-9689-4415-a183-4d223b889336", "contr_year": "1955", "height": 7.0, "function_c": 1000.0, "function_n": "Résidentiel", "adjacency": "detached", "lot_name": "1561266", "lot_area": 421.4, "build_area": 181.9, "build_type": "1", "floor_num": 2, "unit_num": 1, "region": "layer_83", "g_objectid": 183656.0, "g_co_mrc": "66023", "g_code_mun": "66058", "g_nb_locau": 0.0 }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -73.652987701614876, 45.471213539150874 ], [ -73.653056199794548, 45.471240834266737 ], [ -73.65314329542889, 45.471132734859211 ], [ -73.653013892754515, 45.471081136411229 ], [ -73.652948696020133, 45.471162237053228 ], [ -73.653009788929154, 45.471186637402681 ], [ -73.652987701614876, 45.471213539150874 ] ] ] ] } },
|
||||
{ "type": "Feature", "properties": { "cerc_id": 10049185, "provinc_id": "66058923687189840000000", "matricu_18": "923687189840000000", "feature_id": "dc93eb84-ab30-46b7-9089-19f6578f49b4", "contr_year": "1955", "height": 8.0, "function_c": 1000.0, "function_n": "Résidentiel", "adjacency": "detached", "lot_name": "1561267", "lot_area": 413.6, "build_area": 179.5, "build_type": "1", "floor_num": 0, "unit_num": 1, "region": "layer_83", "g_objectid": 320820.0, "g_co_mrc": "66023", "g_code_mun": "66058", "g_nb_locau": 0.0 }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -73.65312699650984, 45.471027341300875 ], [ -73.653247899419071, 45.471074234020861 ], [ -73.653321499774137, 45.470980037235584 ], [ -73.653156996081108, 45.470916732240283 ], [ -73.653118398067264, 45.470966341323241 ], [ -73.653161796430254, 45.470983034714287 ], [ -73.65312699650984, 45.471027341300875 ] ] ] ] } },
|
||||
{ "type": "Feature", "properties": { "cerc_id": 10049186, "provinc_id": "66058923687108410000000", "matricu_18": "923687108410000000", "feature_id": "2a861b62-0eed-46c9-b6e8-8fff09dbc748", "contr_year": "1955", "height": 7.0, "function_c": 1000.0, "function_n": "Résidentiel", "adjacency": "detached", "lot_name": "1561268", "lot_area": 421.4, "build_area": 179.5, "build_type": "1", "floor_num": 2, "unit_num": 1, "region": "layer_83", "g_objectid": 484029.0, "g_co_mrc": "66023", "g_code_mun": "66058", "g_nb_locau": 0.0 }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -73.653185993940738, 45.470882533320498 ], [ -73.653343099695078, 45.470945636741547 ], [ -73.653416689761514, 45.470854838633109 ], [ -73.653304091983983, 45.470809632957575 ], [ -73.653270493009515, 45.470851040466357 ], [ -73.65322629667989, 45.47083293632484 ], [ -73.653185993940738, 45.470882533320498 ] ] ] ] } },
|
||||
{ "type": "Feature", "properties": { "cerc_id": 10049961, "provinc_id": "66058923678090240000000", "matricu_18": "923678090240000000", "feature_id": "b6b13e9c-1aa6-40eb-98b3-cc9d78d3cdd6", "contr_year": "1955", "height": 7.0, "function_c": 1000.0, "function_n": "Résidentiel", "adjacency": "semi-detached", "lot_name": "1561253", "lot_area": 387.9, "build_area": 179.5, "build_type": "2", "floor_num": 2, "unit_num": 1, "region": "layer_83", "g_objectid": 1751779.0, "g_co_mrc": "66023", "g_code_mun": "66058", "g_nb_locau": 0.0 }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -73.65465629144893, 45.471065933427973 ], [ -73.654699391732819, 45.47108333571849 ], [ -73.654738202607007, 45.471033940877646 ], [ -73.654572692090127, 45.470974436644759 ], [ -73.654541794143, 45.471010833216347 ], [ -73.654508492392068, 45.470996439302851 ], [ -73.654481396238566, 45.47102893887228 ], [ -73.654522999627531, 45.471045235540792 ], [ -73.654513780671437, 45.471056783164684 ], [ -73.654628130965548, 45.471101125918594 ], [ -73.65465629144893, 45.471065933427973 ] ] ] ] } },
|
||||
{ "type": "Feature", "properties": { "cerc_id": 10049962, "provinc_id": "66058923678242960000000", "matricu_18": "923678242960000000", "feature_id": "9b00ca80-cd65-4c1c-9978-8d71137b1f41", "contr_year": "1955", "height": 8.0, "function_c": 1000.0, "function_n": "Résidentiel", "adjacency": "semi-detached", "lot_name": "1561251", "lot_area": 390.2, "build_area": 179.5, "build_type": "2", "floor_num": 2, "unit_num": 1, "region": "layer_83", "g_objectid": 2671476.0, "g_co_mrc": "66023", "g_code_mun": "66058", "g_nb_locau": 0.0 }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -73.654548596710114, 45.471274733269581 ], [ -73.654382392204496, 45.471211839974565 ], [ -73.654319022207275, 45.471294771918565 ], [ -73.654444985099204, 45.471343619102058 ], [ -73.65447110100672, 45.471309439952407 ], [ -73.654510602042322, 45.471324338404166 ], [ -73.654548596710114, 45.471274733269581 ] ] ] ] } },
|
||||
{ "type": "Feature", "properties": { "cerc_id": 10049989, "provinc_id": "66058923678543010000000", "matricu_18": "923678543010000000", "feature_id": "13439744-342a-473c-888e-4a438b367918", "contr_year": "1955", "height": 8.0, "function_c": 1000.0, "function_n": "Résidentiel", "adjacency": "semi-detached", "lot_name": "1561257", "lot_area": 390.2, "build_area": 190.9, "build_type": "2", "floor_num": 2, "unit_num": 1, "region": "layer_83", "g_objectid": 3023363.0, "g_co_mrc": "66023", "g_code_mun": "66058", "g_nb_locau": 0.0 }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -73.654092192768559, 45.471331936811204 ], [ -73.654163546309576, 45.471234481468947 ], [ -73.654032942866309, 45.471183835136578 ], [ -73.653997595770761, 45.471232239733126 ], [ -73.653961696465771, 45.47121923852815 ], [ -73.653923889899374, 45.471270934461494 ], [ -73.654092192768559, 45.471331936811204 ] ] ] ] } }
|
||||
]
|
||||
}
|
@ -27,7 +27,7 @@ class Building(CityObject):
|
||||
"""
|
||||
Building(CityObject) class
|
||||
"""
|
||||
def __init__(self, name, surfaces, year_of_construction, function, adjacency, terrains=None, city=None):
|
||||
def __init__(self, name, surfaces, year_of_construction, function, adjacency, lot_area, build_area, terrains=None, city=None):
|
||||
super().__init__(name, surfaces)
|
||||
self._city = city
|
||||
self._households = None
|
||||
@ -37,6 +37,8 @@ class Building(CityObject):
|
||||
self._year_of_construction = year_of_construction
|
||||
self._function = function
|
||||
self._adjacency = adjacency
|
||||
self._lot_area = lot_area
|
||||
self._build_area = build_area
|
||||
self._average_storey_height = None
|
||||
self._storeys_above_ground = None
|
||||
self._floor_area = None
|
||||
@ -56,6 +58,7 @@ class Building(CityObject):
|
||||
self._cooling_consumption = {}
|
||||
self._domestic_hot_water_consumption = {}
|
||||
self._distribution_systems_electrical_consumption = {}
|
||||
self._self_sufficiency = {}
|
||||
self._onsite_electrical_production = {}
|
||||
self._eave_height = None
|
||||
self._energy_systems = None
|
||||
@ -279,6 +282,44 @@ class Building(CityObject):
|
||||
else:
|
||||
self._adjacency = None
|
||||
|
||||
@property
|
||||
def lot_area(self):
|
||||
"""
|
||||
Get building lot area
|
||||
:return: float
|
||||
"""
|
||||
return self._lot_area
|
||||
|
||||
@lot_area.setter
|
||||
def lot_area(self, value):
|
||||
"""
|
||||
Set building lot area
|
||||
:param value: float
|
||||
"""
|
||||
if value is not None:
|
||||
self._lot_area = float(value)
|
||||
else:
|
||||
self._lot_area = None
|
||||
|
||||
@property
|
||||
def build_area(self):
|
||||
"""
|
||||
Get building build area
|
||||
:return: float
|
||||
"""
|
||||
return self._build_area
|
||||
|
||||
@build_area.setter
|
||||
def build_area(self, value):
|
||||
"""
|
||||
Set building build area
|
||||
:param value: float
|
||||
"""
|
||||
if value is not None:
|
||||
self._build_area = float(value)
|
||||
else:
|
||||
self._build_area = None
|
||||
|
||||
@property
|
||||
def average_storey_height(self) -> Union[None, float]:
|
||||
"""
|
||||
@ -799,6 +840,14 @@ class Building(CityObject):
|
||||
|
||||
return self._distribution_systems_electrical_consumption
|
||||
|
||||
@distribution_systems_electrical_consumption.setter
|
||||
def distribution_systems_electrical_consumption(self, value):
|
||||
"""
|
||||
attribute to set the total electricity consumption in kWh
|
||||
:param value: float
|
||||
"""
|
||||
self._distribution_systems_electrical_consumption = value
|
||||
|
||||
def _calculate_consumption(self, consumption_type, demand):
|
||||
# todo: modify when COP depends on the hour
|
||||
coefficient_of_performance = 0
|
||||
@ -972,3 +1021,18 @@ class Building(CityObject):
|
||||
"""
|
||||
self._pv_generation = value
|
||||
|
||||
@property
|
||||
def self_sufficiency(self):
|
||||
"""
|
||||
temporary attribute to get the self-sufficiency in kWh
|
||||
:return: dict
|
||||
"""
|
||||
return self._self_sufficiency
|
||||
|
||||
@self_sufficiency.setter
|
||||
def self_sufficiency(self, value):
|
||||
"""
|
||||
temporary attribute to set the self-sufficiency in kWh
|
||||
:param value: float
|
||||
"""
|
||||
self._self_sufficiency = value
|
@ -1,774 +0,0 @@
|
||||
{
|
||||
"archetypes": [
|
||||
{
|
||||
"function": "Large multifamily building",
|
||||
"period_of_construction": "2021_2050",
|
||||
"climate_zone": "B3",
|
||||
"average_storey_height": 3.57,
|
||||
"thermal_capacity": 83.018,
|
||||
"extra_loses_due_thermal_bridges": 0.1,
|
||||
"infiltration_rate_for_ventilation_system_on": 0,
|
||||
"infiltration_rate_for_ventilation_system_off": 0.9,
|
||||
"constructions": {
|
||||
"OutdoorsWall": {
|
||||
"opaque_surface_name": "PA1_PA2_2021_2050_FACEXT",
|
||||
"transparent_surface_name": "PA1_PA2_2021_2050_WIN1",
|
||||
"transparent_ratio": {
|
||||
"north": "60",
|
||||
"east": "5",
|
||||
"south": "60",
|
||||
"west": "5"
|
||||
}
|
||||
},
|
||||
"OutdoorsRoofCeiling": {
|
||||
"opaque_surface_name": "PA1_PA2_2021_2050_ROOF",
|
||||
"transparent_surface_name": null,
|
||||
"transparent_ratio": {
|
||||
"north": null,
|
||||
"east": null,
|
||||
"south": null,
|
||||
"west": null
|
||||
}
|
||||
},
|
||||
"GroundFloor": {
|
||||
"opaque_surface_name": "PA1_PA2_2021_2050_FLOOR"
|
||||
},
|
||||
"GroundWall": {
|
||||
"opaque_surface_name": "PA1_PA2_2021_2050_FACEXT"
|
||||
},
|
||||
"GroundRoofCeiling": {
|
||||
"opaque_surface_name": "PA1_PA2_2021_2050_FLOORINT"
|
||||
}
|
||||
},
|
||||
"infiltration_rate_area_for_ventilation_system_on": 0,
|
||||
"infiltration_rate_area_for_ventilation_system_off": 0
|
||||
},
|
||||
{
|
||||
"function": "Medium multifamily building",
|
||||
"period_of_construction": "2021_2050",
|
||||
"climate_zone": "B3",
|
||||
"average_storey_height": 3.57,
|
||||
"thermal_capacity": 83.018,
|
||||
"extra_loses_due_thermal_bridges": 0.1,
|
||||
"infiltration_rate_for_ventilation_system_on": 0,
|
||||
"infiltration_rate_for_ventilation_system_off": 0.9,
|
||||
"constructions": {
|
||||
"OutdoorsWall": {
|
||||
"opaque_surface_name": "PA1_PA2_2021_2050_FACEXT",
|
||||
"transparent_surface_name": "PA1_PA2_2021_2050_WIN1",
|
||||
"transparent_ratio": {
|
||||
"north": "60",
|
||||
"east": "5",
|
||||
"south": "60",
|
||||
"west": "5"
|
||||
}
|
||||
},
|
||||
"OutdoorsRoofCeiling": {
|
||||
"opaque_surface_name": "PA1_PA2_2021_2050_ROOF",
|
||||
"transparent_surface_name": null,
|
||||
"transparent_ratio": {
|
||||
"north": null,
|
||||
"east": null,
|
||||
"south": null,
|
||||
"west": null
|
||||
}
|
||||
},
|
||||
"GroundFloor": {
|
||||
"opaque_surface_name": "PA1_PA2_2021_2050_FLOOR"
|
||||
},
|
||||
"GroundWall": {
|
||||
"opaque_surface_name": "PA1_PA2_2021_2050_FACEXT"
|
||||
},
|
||||
"GroundRoofCeiling": {
|
||||
"opaque_surface_name": "PA1_PA2_2021_2050_FLOORINT"
|
||||
}
|
||||
},
|
||||
"infiltration_rate_area_for_ventilation_system_on": 0,
|
||||
"infiltration_rate_area_for_ventilation_system_off": 0
|
||||
},
|
||||
{
|
||||
"function": "Small multifamily building",
|
||||
"period_of_construction": "2021_2050",
|
||||
"climate_zone": "B3",
|
||||
"average_storey_height": 3.57,
|
||||
"thermal_capacity": 83.018,
|
||||
"extra_loses_due_thermal_bridges": 0.1,
|
||||
"infiltration_rate_for_ventilation_system_on": 0,
|
||||
"infiltration_rate_for_ventilation_system_off": 0.9,
|
||||
"constructions": {
|
||||
"OutdoorsWall": {
|
||||
"opaque_surface_name": "PA1_PA2_2021_2050_FACEXT",
|
||||
"transparent_surface_name": "PA1_PA2_2021_2050_WIN1",
|
||||
"transparent_ratio": {
|
||||
"north": "60",
|
||||
"east": "5",
|
||||
"south": "60",
|
||||
"west": "5"
|
||||
}
|
||||
},
|
||||
"OutdoorsRoofCeiling": {
|
||||
"opaque_surface_name": "PA1_PA2_2021_2050_ROOF",
|
||||
"transparent_surface_name": null,
|
||||
"transparent_ratio": {
|
||||
"north": null,
|
||||
"east": null,
|
||||
"south": null,
|
||||
"west": null
|
||||
}
|
||||
},
|
||||
"GroundFloor": {
|
||||
"opaque_surface_name": "PA1_PA2_2021_2050_FLOOR"
|
||||
},
|
||||
"GroundWall": {
|
||||
"opaque_surface_name": "PA1_PA2_2021_2050_FACEXT"
|
||||
},
|
||||
"GroundRoofCeiling": {
|
||||
"opaque_surface_name": "PA1_PA2_2021_2050_FLOORINT"
|
||||
}
|
||||
},
|
||||
"infiltration_rate_area_for_ventilation_system_on": 0,
|
||||
"infiltration_rate_area_for_ventilation_system_off": 0
|
||||
},
|
||||
{
|
||||
"function": "Single-family building",
|
||||
"period_of_construction": "2021_2050",
|
||||
"climate_zone": "B3",
|
||||
"average_storey_height": 3.57,
|
||||
"thermal_capacity": 83.018,
|
||||
"extra_loses_due_thermal_bridges": 0.1,
|
||||
"infiltration_rate_for_ventilation_system_on": 0,
|
||||
"infiltration_rate_for_ventilation_system_off": 0.9,
|
||||
"constructions": {
|
||||
"OutdoorsWall": {
|
||||
"opaque_surface_name": "PA1_PA2_2021_2050_FACEXT",
|
||||
"transparent_surface_name": "PA1_PA2_2021_2050_WIN1",
|
||||
"transparent_ratio": {
|
||||
"north": "60",
|
||||
"east": "5",
|
||||
"south": "60",
|
||||
"west": "5"
|
||||
}
|
||||
},
|
||||
"OutdoorsRoofCeiling": {
|
||||
"opaque_surface_name": "PA1_PA2_2021_2050_ROOF",
|
||||
"transparent_surface_name": null,
|
||||
"transparent_ratio": {
|
||||
"north": null,
|
||||
"east": null,
|
||||
"south": null,
|
||||
"west": null
|
||||
}
|
||||
},
|
||||
"GroundFloor": {
|
||||
"opaque_surface_name": "PA1_PA2_2021_2050_FLOOR"
|
||||
},
|
||||
"GroundWall": {
|
||||
"opaque_surface_name": "PA1_PA2_2021_2050_FACEXT"
|
||||
},
|
||||
"GroundRoofCeiling": {
|
||||
"opaque_surface_name": "PA1_PA2_2021_2050_FLOORINT"
|
||||
}
|
||||
},
|
||||
"infiltration_rate_area_for_ventilation_system_on": 0,
|
||||
"infiltration_rate_area_for_ventilation_system_off": 0
|
||||
},
|
||||
{
|
||||
"function": "Large multifamily building",
|
||||
"period_of_construction": "1961_1980",
|
||||
"climate_zone": "B3",
|
||||
"average_storey_height": 3.57,
|
||||
"thermal_capacity": 3000,
|
||||
"extra_loses_due_thermal_bridges": 0.1,
|
||||
"infiltration_rate_for_ventilation_system_on": 0,
|
||||
"infiltration_rate_for_ventilation_system_off": 0.9,
|
||||
"constructions": {
|
||||
"OutdoorsWall": {
|
||||
"opaque_surface_name": "PA1_PA2_1961_1980_FACEXT1",
|
||||
"transparent_surface_name": "PA1_PA2_1961_1980_WIN1",
|
||||
"transparent_ratio": {
|
||||
"north": "60",
|
||||
"east": "60",
|
||||
"south": "60",
|
||||
"west": "60"
|
||||
}
|
||||
},
|
||||
"OutdoorsRoofCeiling": {
|
||||
"opaque_surface_name": "PA1_PA2_1961_1980_ROOF1",
|
||||
"transparent_surface_name": null,
|
||||
"transparent_ratio": {
|
||||
"north": null,
|
||||
"east": null,
|
||||
"south": null,
|
||||
"west": null
|
||||
}
|
||||
},
|
||||
"GroundFloor": {
|
||||
"opaque_surface_name": "PA1_PA2_1961_1980_FLOOR1"
|
||||
},
|
||||
"GroundWall": {
|
||||
"opaque_surface_name": "PA1_PA2_1961_1980_FACEXT1"
|
||||
},
|
||||
"GroundRoofCeiling": {
|
||||
"opaque_surface_name": "PA1_PA2_1961_1980_FLOOR4"
|
||||
}
|
||||
},
|
||||
"infiltration_rate_area_for_ventilation_system_on": 0,
|
||||
"infiltration_rate_area_for_ventilation_system_off": 0
|
||||
},
|
||||
{
|
||||
"function": "Large multifamily building",
|
||||
"period_of_construction": "1981_2007",
|
||||
"climate_zone": "B3",
|
||||
"average_storey_height": 3.2,
|
||||
"thermal_capacity": 3179,
|
||||
"extra_loses_due_thermal_bridges": 0.1,
|
||||
"infiltration_rate_for_ventilation_system_on": 0,
|
||||
"infiltration_rate_for_ventilation_system_off": 0.9,
|
||||
"constructions": {
|
||||
"OutdoorsWall": {
|
||||
"opaque_surface_name": "E_1981_2007_FACEXT1",
|
||||
"transparent_surface_name": "E_1981_2007_WIN1",
|
||||
"transparent_ratio": {
|
||||
"north": "45",
|
||||
"east": "45",
|
||||
"south": "45",
|
||||
"west": "45"
|
||||
}
|
||||
},
|
||||
"OutdoorsRoofCeiling": {
|
||||
"opaque_surface_name": "E_1981_2007_ROOF1",
|
||||
"transparent_surface_name": null,
|
||||
"transparent_ratio": {
|
||||
"north": null,
|
||||
"east": null,
|
||||
"south": null,
|
||||
"west": null
|
||||
}
|
||||
},
|
||||
"GroundFloor": {
|
||||
"opaque_surface_name": "E_1981_2007_FLOORGR1"
|
||||
}
|
||||
},
|
||||
"infiltration_rate_area_for_ventilation_system_on": 0,
|
||||
"infiltration_rate_area_for_ventilation_system_off": 0
|
||||
},
|
||||
{
|
||||
"function": "Medium multifamily building",
|
||||
"period_of_construction": "1800_1900",
|
||||
"climate_zone": "B3",
|
||||
"average_storey_height": 4.39,
|
||||
"thermal_capacity": 3330,
|
||||
"extra_loses_due_thermal_bridges": 0.1,
|
||||
"infiltration_rate_for_ventilation_system_on": 0,
|
||||
"infiltration_rate_for_ventilation_system_off": 0.9,
|
||||
"constructions": {
|
||||
"OutdoorsWall": {
|
||||
"opaque_surface_name": "A_B1900_FACEXT1",
|
||||
"transparent_surface_name": "A_B1900_WIN2",
|
||||
"transparent_ratio": {
|
||||
"north": "20",
|
||||
"east": "20",
|
||||
"south": "20",
|
||||
"west": "20"
|
||||
}
|
||||
},
|
||||
"OutdoorsRoofCeiling": {
|
||||
"opaque_surface_name": "A_B1900_ROOF1",
|
||||
"transparent_surface_name": null,
|
||||
"transparent_ratio": {
|
||||
"north": null,
|
||||
"east": null,
|
||||
"south": null,
|
||||
"west": null
|
||||
}
|
||||
},
|
||||
"GroundFloor": {
|
||||
"opaque_surface_name": "A_B1900_FLOORGR1"
|
||||
}
|
||||
},
|
||||
"infiltration_rate_area_for_ventilation_system_on": 0,
|
||||
"infiltration_rate_area_for_ventilation_system_off": 0
|
||||
},
|
||||
{
|
||||
"function": "Medium multifamily building",
|
||||
"period_of_construction": "1901_1940",
|
||||
"climate_zone": "B3",
|
||||
"average_storey_height": 3.65,
|
||||
"thermal_capacity": 3420,
|
||||
"extra_loses_due_thermal_bridges": 0.1,
|
||||
"infiltration_rate_for_ventilation_system_on": 0,
|
||||
"infiltration_rate_for_ventilation_system_off": 0.9,
|
||||
"constructions": {
|
||||
"OutdoorsWall": {
|
||||
"opaque_surface_name": "B_1901_1940_FACEXT1",
|
||||
"transparent_surface_name": "B_1901_1940_WIN1",
|
||||
"transparent_ratio": {
|
||||
"north": "40",
|
||||
"east": "40",
|
||||
"south": "40",
|
||||
"west": "40"
|
||||
}
|
||||
},
|
||||
"OutdoorsRoofCeiling": {
|
||||
"opaque_surface_name": "B_1901_1940_ROOF1",
|
||||
"transparent_surface_name": null,
|
||||
"transparent_ratio": {
|
||||
"north": null,
|
||||
"east": null,
|
||||
"south": null,
|
||||
"west": null
|
||||
}
|
||||
},
|
||||
"GroundFloor": {
|
||||
"opaque_surface_name": "B_1901_1940_FLOORGR1"
|
||||
}
|
||||
},
|
||||
"infiltration_rate_area_for_ventilation_system_on": 0,
|
||||
"infiltration_rate_area_for_ventilation_system_off": 0
|
||||
},
|
||||
{
|
||||
"function": "Medium multifamily building",
|
||||
"period_of_construction": "1941_1960",
|
||||
"climate_zone": "B3",
|
||||
"average_storey_height": 3.6,
|
||||
"thermal_capacity": 3000,
|
||||
"extra_loses_due_thermal_bridges": 0.1,
|
||||
"infiltration_rate_for_ventilation_system_on": 0,
|
||||
"infiltration_rate_for_ventilation_system_off": 0.9,
|
||||
"constructions": {
|
||||
"OutdoorsWall": {
|
||||
"opaque_surface_name": " C_1941_1960_FACEXT1",
|
||||
"transparent_surface_name": "C_1941_1960_WIN1",
|
||||
"transparent_ratio": {
|
||||
"north": "30",
|
||||
"east": "30",
|
||||
"south": "30",
|
||||
"west": "30"
|
||||
}
|
||||
},
|
||||
"OutdoorsRoofCeiling": {
|
||||
"opaque_surface_name": "C_1941_1960_ROOF1",
|
||||
"transparent_surface_name": null,
|
||||
"transparent_ratio": {
|
||||
"north": null,
|
||||
"east": null,
|
||||
"south": null,
|
||||
"west": null
|
||||
}
|
||||
},
|
||||
"GroundFloor": {
|
||||
"opaque_surface_name": "C_1941_1960_FLOORGR1"
|
||||
}
|
||||
},
|
||||
"infiltration_rate_area_for_ventilation_system_on": 0,
|
||||
"infiltration_rate_area_for_ventilation_system_off": 0
|
||||
},
|
||||
{
|
||||
"function": "Medium multifamily building",
|
||||
"period_of_construction": "1961_1980",
|
||||
"climate_zone": "B3",
|
||||
"average_storey_height": 4.5,
|
||||
"thermal_capacity": 3540,
|
||||
"extra_loses_due_thermal_bridges": 0.1,
|
||||
"infiltration_rate_for_ventilation_system_on": 0,
|
||||
"infiltration_rate_for_ventilation_system_off": 0.9,
|
||||
"constructions": {
|
||||
"OutdoorsWall": {
|
||||
"opaque_surface_name": "PA1_PA2_1961_1980_FACEXT1",
|
||||
"transparent_surface_name": "PA1_PA2_1961_1980_WIN1",
|
||||
"transparent_ratio": {
|
||||
"north": "55",
|
||||
"east": "55",
|
||||
"south": "55",
|
||||
"west": "55"
|
||||
}
|
||||
},
|
||||
"OutdoorsRoofCeiling": {
|
||||
"opaque_surface_name": "PA1_PA2_1961_1980_ROOF1",
|
||||
"transparent_surface_name": null,
|
||||
"transparent_ratio": {
|
||||
"north": null,
|
||||
"east": null,
|
||||
"south": null,
|
||||
"west": null
|
||||
}
|
||||
},
|
||||
"GroundFloor": {
|
||||
"opaque_surface_name": "PA1_PA2_1961_1980_FLOOR1"
|
||||
}
|
||||
},
|
||||
"infiltration_rate_area_for_ventilation_system_on": 0,
|
||||
"infiltration_rate_area_for_ventilation_system_off": 0
|
||||
},
|
||||
{
|
||||
"function": "Medium multifamily building",
|
||||
"period_of_construction": "1981_2007",
|
||||
"climate_zone": "B3",
|
||||
"average_storey_height": 3.2,
|
||||
"thermal_capacity": 3179,
|
||||
"extra_loses_due_thermal_bridges": 0.1,
|
||||
"infiltration_rate_for_ventilation_system_on": 0,
|
||||
"infiltration_rate_for_ventilation_system_off": 0.9,
|
||||
"constructions": {
|
||||
"OutdoorsWall": {
|
||||
"opaque_surface_name": "E_1981_2007_FACEXT1",
|
||||
"transparent_surface_name": "E_1981_2007_WIN1",
|
||||
"transparent_ratio": {
|
||||
"north": "45",
|
||||
"east": "45",
|
||||
"south": "45",
|
||||
"west": "45"
|
||||
}
|
||||
},
|
||||
"OutdoorsRoofCeiling": {
|
||||
"opaque_surface_name": "E_1981_2007_ROOF1",
|
||||
"transparent_surface_name": null,
|
||||
"transparent_ratio": {
|
||||
"north": null,
|
||||
"east": null,
|
||||
"south": null,
|
||||
"west": null
|
||||
}
|
||||
},
|
||||
"GroundFloor": {
|
||||
"opaque_surface_name": "E_1981_2007_FLOORGR1"
|
||||
}
|
||||
},
|
||||
"infiltration_rate_area_for_ventilation_system_on": 0,
|
||||
"infiltration_rate_area_for_ventilation_system_off": 0
|
||||
},
|
||||
{
|
||||
"function": "Medium multifamily building",
|
||||
"period_of_construction": "2008_2014",
|
||||
"climate_zone": "B3",
|
||||
"average_storey_height": 2.75,
|
||||
"thermal_capacity": 3290,
|
||||
"extra_loses_due_thermal_bridges": 0.1,
|
||||
"infiltration_rate_for_ventilation_system_on": 0,
|
||||
"infiltration_rate_for_ventilation_system_off": 0.9,
|
||||
"constructions": {
|
||||
"OutdoorsWall": {
|
||||
"opaque_surface_name": "F_2008_2014_FACEXT1",
|
||||
"transparent_surface_name": "F_2008_2014_WIN1",
|
||||
"transparent_ratio": {
|
||||
"north": "40",
|
||||
"east": "40",
|
||||
"south": "40",
|
||||
"west": "40"
|
||||
}
|
||||
},
|
||||
"OutdoorsRoofCeiling": {
|
||||
"opaque_surface_name": "F_2008_2014_ROOF1",
|
||||
"transparent_surface_name": null,
|
||||
"transparent_ratio": {
|
||||
"north": null,
|
||||
"east": null,
|
||||
"south": null,
|
||||
"west": null
|
||||
}
|
||||
},
|
||||
"GroundFloor": {
|
||||
"opaque_surface_name": "F_2008_2014_FLOORGR1"
|
||||
}
|
||||
},
|
||||
"infiltration_rate_area_for_ventilation_system_on": 0,
|
||||
"infiltration_rate_area_for_ventilation_system_off": 0
|
||||
},
|
||||
{
|
||||
"function": "Small multifamily building",
|
||||
"period_of_construction": "1800_1980",
|
||||
"climate_zone": "B3",
|
||||
"average_storey_height": 3.8,
|
||||
"thermal_capacity": 3527.9,
|
||||
"extra_loses_due_thermal_bridges": 0.1,
|
||||
"infiltration_rate_for_ventilation_system_on": 0,
|
||||
"infiltration_rate_for_ventilation_system_off": 0.9,
|
||||
"constructions": {
|
||||
"OutdoorsWall": {
|
||||
"opaque_surface_name": "PA3_PA4_1901_1940_FACEXT1",
|
||||
"transparent_surface_name": "PA3_PA4_1901_1940_WIN1",
|
||||
"transparent_ratio": {
|
||||
"north": "40",
|
||||
"east": "40",
|
||||
"south": "40",
|
||||
"west": "40"
|
||||
}
|
||||
},
|
||||
"OutdoorsRoofCeiling": {
|
||||
"opaque_surface_name": "PA3_PA4_1901_1940_ROOF1",
|
||||
"transparent_surface_name": null,
|
||||
"transparent_ratio": {
|
||||
"north": null,
|
||||
"east": null,
|
||||
"south": null,
|
||||
"west": null
|
||||
}
|
||||
},
|
||||
"GroundFloor": {
|
||||
"opaque_surface_name": "PA3_PA4_1901_1940_FLOORGR1"
|
||||
}
|
||||
},
|
||||
"infiltration_rate_area_for_ventilation_system_on": 0,
|
||||
"infiltration_rate_area_for_ventilation_system_off": 0
|
||||
},
|
||||
{
|
||||
"function": "Small multifamily building",
|
||||
"period_of_construction": "1981_2007",
|
||||
"climate_zone": "B3",
|
||||
"average_storey_height": 3.2,
|
||||
"thermal_capacity": 3179,
|
||||
"extra_loses_due_thermal_bridges": 0.1,
|
||||
"infiltration_rate_for_ventilation_system_on": 0,
|
||||
"infiltration_rate_for_ventilation_system_off": 0.9,
|
||||
"constructions": {
|
||||
"OutdoorsWall": {
|
||||
"opaque_surface_name": "E_1981_2007_FACEXT1",
|
||||
"transparent_surface_name": "E_1981_2007_WIN1",
|
||||
"transparent_ratio": {
|
||||
"north": "45",
|
||||
"east": "45",
|
||||
"south": "45",
|
||||
"west": "45"
|
||||
}
|
||||
},
|
||||
"OutdoorsRoofCeiling": {
|
||||
"opaque_surface_name": "E_1981_2007_ROOF1",
|
||||
"transparent_surface_name": null,
|
||||
"transparent_ratio": {
|
||||
"north": null,
|
||||
"east": null,
|
||||
"south": null,
|
||||
"west": null
|
||||
}
|
||||
},
|
||||
"GroundFloor": {
|
||||
"opaque_surface_name": "E_1981_2007_FLOORGR1"
|
||||
}
|
||||
},
|
||||
"infiltration_rate_area_for_ventilation_system_on": 0,
|
||||
"infiltration_rate_area_for_ventilation_system_off": 0
|
||||
},
|
||||
{
|
||||
"function": "Small multifamily building",
|
||||
"period_of_construction": "2008_2014",
|
||||
"climate_zone": "B3",
|
||||
"average_storey_height": 2.75,
|
||||
"thermal_capacity": 3290,
|
||||
"extra_loses_due_thermal_bridges": 0.1,
|
||||
"infiltration_rate_for_ventilation_system_on": 0,
|
||||
"infiltration_rate_for_ventilation_system_off": 0.9,
|
||||
"constructions": {
|
||||
"OutdoorsWall": {
|
||||
"opaque_surface_name": "F_2008_2014_FACEXT1",
|
||||
"transparent_surface_name": "F_2008_2014_WIN1",
|
||||
"transparent_ratio": {
|
||||
"north": "40",
|
||||
"east": "40",
|
||||
"south": "40",
|
||||
"west": "40"
|
||||
}
|
||||
},
|
||||
"OutdoorsRoofCeiling": {
|
||||
"opaque_surface_name": "F_2008_2014_ROOF1",
|
||||
"transparent_surface_name": null,
|
||||
"transparent_ratio": {
|
||||
"north": null,
|
||||
"east": null,
|
||||
"south": null,
|
||||
"west": null
|
||||
}
|
||||
},
|
||||
"GroundFloor": {
|
||||
"opaque_surface_name": "F_2008_2014_FLOORGR1"
|
||||
}
|
||||
},
|
||||
"infiltration_rate_area_for_ventilation_system_on": 0,
|
||||
"infiltration_rate_area_for_ventilation_system_off": 0
|
||||
},
|
||||
{
|
||||
"function": "Small multifamily building",
|
||||
"period_of_construction": "2015_2019",
|
||||
"climate_zone": "B3",
|
||||
"average_storey_height": 2.75,
|
||||
"thermal_capacity": 3290,
|
||||
"extra_loses_due_thermal_bridges": 0.1,
|
||||
"infiltration_rate_for_ventilation_system_on": 0,
|
||||
"infiltration_rate_for_ventilation_system_off": 0.9,
|
||||
"constructions": {
|
||||
"OutdoorsWall": {
|
||||
"opaque_surface_name": "G_2015_2019_FACEXT1",
|
||||
"transparent_surface_name": "G_2015_2019_WIN1",
|
||||
"transparent_ratio": {
|
||||
"north": "40",
|
||||
"east": "40",
|
||||
"south": "40",
|
||||
"west": "40"
|
||||
}
|
||||
},
|
||||
"OutdoorsRoofCeiling": {
|
||||
"opaque_surface_name": "G_2015_2019_ROOF1",
|
||||
"transparent_surface_name": null,
|
||||
"transparent_ratio": {
|
||||
"north": null,
|
||||
"east": null,
|
||||
"south": null,
|
||||
"west": null
|
||||
}
|
||||
},
|
||||
"GroundFloor": {
|
||||
"opaque_surface_name": "G_2015_2019_FLOORGR1"
|
||||
}
|
||||
},
|
||||
"infiltration_rate_area_for_ventilation_system_on": 0,
|
||||
"infiltration_rate_area_for_ventilation_system_off": 0
|
||||
},
|
||||
{
|
||||
"function": "Single-family building",
|
||||
"period_of_construction": "1800_1980",
|
||||
"climate_zone": "B3",
|
||||
"average_storey_height": 3.68,
|
||||
"thermal_capacity": 4400,
|
||||
"extra_loses_due_thermal_bridges": 0.1,
|
||||
"infiltration_rate_for_ventilation_system_on": 0,
|
||||
"infiltration_rate_for_ventilation_system_off": 0.9,
|
||||
"constructions": {
|
||||
"OutdoorsWall": {
|
||||
"opaque_surface_name": "PA3_PA4_1901_1940_FACEXT1",
|
||||
"transparent_surface_name": "PA3_PA4_1901_1940_WIN1",
|
||||
"transparent_ratio": {
|
||||
"north": "40",
|
||||
"east": "40",
|
||||
"south": "40",
|
||||
"west": "40"
|
||||
}
|
||||
},
|
||||
"OutdoorsRoofCeiling": {
|
||||
"opaque_surface_name": "PA3_PA4_1901_1940_ROOF1",
|
||||
"transparent_surface_name": null,
|
||||
"transparent_ratio": {
|
||||
"north": null,
|
||||
"east": null,
|
||||
"south": null,
|
||||
"west": null
|
||||
}
|
||||
},
|
||||
"GroundFloor": {
|
||||
"opaque_surface_name": "PA3_PA4_1901_1940_FLOORGR1"
|
||||
}
|
||||
},
|
||||
"infiltration_rate_area_for_ventilation_system_on": 0,
|
||||
"infiltration_rate_area_for_ventilation_system_off": 0
|
||||
},
|
||||
{
|
||||
"function": "Single-family building",
|
||||
"period_of_construction": "1981_2007",
|
||||
"climate_zone": "B3",
|
||||
"average_storey_height": 3.2,
|
||||
"thermal_capacity": 3179,
|
||||
"extra_loses_due_thermal_bridges": 0.1,
|
||||
"infiltration_rate_for_ventilation_system_on": 0,
|
||||
"infiltration_rate_for_ventilation_system_off": 0.9,
|
||||
"constructions": {
|
||||
"OutdoorsWall": {
|
||||
"opaque_surface_name": "E_1981_2007_FACEXT1",
|
||||
"transparent_surface_name": "E_1981_2007_WIN1",
|
||||
"transparent_ratio": {
|
||||
"north": "45",
|
||||
"east": "45",
|
||||
"south": "45",
|
||||
"west": "45"
|
||||
}
|
||||
},
|
||||
"OutdoorsRoofCeiling": {
|
||||
"opaque_surface_name": "E_1981_2007_ROOF1",
|
||||
"transparent_surface_name": null,
|
||||
"transparent_ratio": {
|
||||
"north": null,
|
||||
"east": null,
|
||||
"south": null,
|
||||
"west": null
|
||||
}
|
||||
},
|
||||
"GroundFloor": {
|
||||
"opaque_surface_name": "E_1981_2007_FLOORGR1"
|
||||
}
|
||||
},
|
||||
"infiltration_rate_area_for_ventilation_system_on": 0,
|
||||
"infiltration_rate_area_for_ventilation_system_off": 0
|
||||
},
|
||||
{
|
||||
"function": "Single-family building",
|
||||
"period_of_construction": "2008_2014",
|
||||
"climate_zone": "B3",
|
||||
"average_storey_height": 3.75,
|
||||
"thermal_capacity": 3200,
|
||||
"extra_loses_due_thermal_bridges": 0.1,
|
||||
"infiltration_rate_for_ventilation_system_on": 0,
|
||||
"infiltration_rate_for_ventilation_system_off": 0.9,
|
||||
"constructions": {
|
||||
"OutdoorsWall": {
|
||||
"opaque_surface_name": "F_2008_2014_FACEXT1",
|
||||
"transparent_surface_name": "F_2008_2014_WIN1",
|
||||
"transparent_ratio": {
|
||||
"north": "60",
|
||||
"east": "60",
|
||||
"south": "60",
|
||||
"west": "60"
|
||||
}
|
||||
},
|
||||
"OutdoorsRoofCeiling": {
|
||||
"opaque_surface_name": "F_2008_2014_ROOF1",
|
||||
"transparent_surface_name": null,
|
||||
"transparent_ratio": {
|
||||
"north": null,
|
||||
"east": null,
|
||||
"south": null,
|
||||
"west": null
|
||||
}
|
||||
},
|
||||
"GroundFloor": {
|
||||
"opaque_surface_name": "F_2008_2014_FLOORGR1"
|
||||
}
|
||||
},
|
||||
"infiltration_rate_area_for_ventilation_system_on": 0,
|
||||
"infiltration_rate_area_for_ventilation_system_off": 0
|
||||
},
|
||||
{
|
||||
"function": "Single-family building",
|
||||
"period_of_construction": "2015_2019",
|
||||
"climate_zone": "B3",
|
||||
"average_storey_height": 3.75,
|
||||
"thermal_capacity": 3200,
|
||||
"extra_loses_due_thermal_bridges": 0.1,
|
||||
"infiltration_rate_for_ventilation_system_on": 0,
|
||||
"infiltration_rate_for_ventilation_system_off": 0.9,
|
||||
"constructions": {
|
||||
"OutdoorsWall": {
|
||||
"opaque_surface_name": "G_2015_2019_FACEXT1",
|
||||
"transparent_surface_name": "G_2015_2019_WIN1",
|
||||
"transparent_ratio": {
|
||||
"north": "60",
|
||||
"east": "60",
|
||||
"south": "60",
|
||||
"west": "60"
|
||||
}
|
||||
},
|
||||
"OutdoorsRoofCeiling": {
|
||||
"opaque_surface_name": "G_2015_2019_ROOF1",
|
||||
"transparent_surface_name": null,
|
||||
"transparent_ratio": {
|
||||
"north": null,
|
||||
"east": null,
|
||||
"south": null,
|
||||
"west": null
|
||||
}
|
||||
},
|
||||
"GroundFloor": {
|
||||
"opaque_surface_name": "G_2015_2019_FLOORGR1"
|
||||
}
|
||||
},
|
||||
"infiltration_rate_area_for_ventilation_system_on": 0,
|
||||
"infiltration_rate_area_for_ventilation_system_off": 0
|
||||
}
|
||||
]
|
||||
}
|
@ -467,7 +467,7 @@ class Idf:
|
||||
|
||||
def _add_infiltration_surface(self, thermal_zone, zone_name):
|
||||
schedule = f'INF_CONST schedules {thermal_zone.usage_name}'
|
||||
_infiltration = thermal_zone.infiltration_rate_area_system_off*1
|
||||
_infiltration = thermal_zone.infiltration_rate_area_system_off* cte.INFILTRATION_75PA_TO_4PA
|
||||
self._idf.newidfobject(self._INFILTRATION,
|
||||
Name=f'{zone_name}_infiltration',
|
||||
Zone_or_ZoneList_or_Space_or_SpaceList_Name=zone_name,
|
||||
|
@ -36,6 +36,8 @@ class Geojson:
|
||||
function_field=None,
|
||||
function_to_hub=None,
|
||||
adjacency_field=None,
|
||||
lot_area_field=None,
|
||||
build_area_field=None,
|
||||
hub_crs=None
|
||||
):
|
||||
self._hub_crs = hub_crs
|
||||
@ -53,6 +55,8 @@ class Geojson:
|
||||
self._year_of_construction_field = year_of_construction_field
|
||||
self._function_field = function_field
|
||||
self._adjacency_field = adjacency_field
|
||||
self._lot_area_field = lot_area_field
|
||||
self._build_area_field = build_area_field
|
||||
self._function_to_hub = function_to_hub
|
||||
with open(path, 'r', encoding='utf8') as json_file:
|
||||
self._geojson = json.loads(json_file.read())
|
||||
@ -129,6 +133,12 @@ class Geojson:
|
||||
adjacency = None
|
||||
if self._adjacency_field is not None:
|
||||
adjacency = str(feature['properties'][self._adjacency_field])
|
||||
lot_area = None
|
||||
if self._lot_area_field is not None:
|
||||
lot_area = float(feature['properties'][self._lot_area_field])
|
||||
build_area = None
|
||||
if self._build_area_field is not None:
|
||||
build_area = float(feature['properties'][self._build_area_field])
|
||||
function = None
|
||||
if self._function_field is not None:
|
||||
function = str(int(feature['properties'][self._function_field]))
|
||||
@ -177,6 +187,8 @@ class Geojson:
|
||||
function,
|
||||
year_of_construction,
|
||||
adjacency,
|
||||
lot_area,
|
||||
build_area,
|
||||
extrusion_height))
|
||||
|
||||
elif str(geometry['type']).lower() == 'multipolygon':
|
||||
@ -186,6 +198,8 @@ class Geojson:
|
||||
function,
|
||||
year_of_construction,
|
||||
adjacency,
|
||||
lot_area,
|
||||
build_area,
|
||||
extrusion_height))
|
||||
else:
|
||||
raise NotImplementedError(f'Geojson geometry type [{geometry["type"]}] unknown')
|
||||
@ -210,7 +224,7 @@ class Geojson:
|
||||
transformed_coordinates = f'{transformed_coordinates} {transformed[self._X]} {transformed[self._Y]} 0.0'
|
||||
return transformed_coordinates.lstrip(' ')
|
||||
|
||||
def _parse_polygon(self, coordinates, building_name, building_aliases, function, year_of_construction, adjacency, extrusion_height):
|
||||
def _parse_polygon(self, coordinates, building_name, building_aliases, function, year_of_construction, adjacency, lot_area, build_area, extrusion_height):
|
||||
surfaces = []
|
||||
for polygon_coordinates in coordinates:
|
||||
points = igh.points_from_string(
|
||||
@ -243,7 +257,7 @@ class Geojson:
|
||||
polygon = Polygon(coordinates)
|
||||
polygon.area = igh.ground_area(coordinates)
|
||||
surfaces[-1] = Surface(polygon, polygon)
|
||||
building = Building(f'{building_name}', surfaces, year_of_construction, function, adjacency)
|
||||
building = Building(f'{building_name}', surfaces, year_of_construction, function, adjacency, lot_area, build_area)
|
||||
for alias in building_aliases:
|
||||
building.add_alias(alias)
|
||||
if extrusion_height == 0:
|
||||
@ -284,7 +298,7 @@ class Geojson:
|
||||
building.volume = volume
|
||||
return building
|
||||
|
||||
def _parse_multi_polygon(self, polygons_coordinates, building_name, building_aliases, function, year_of_construction, adjacency, extrusion_height):
|
||||
def _parse_multi_polygon(self, polygons_coordinates, building_name, building_aliases, function, year_of_construction, adjacency, lot_area, build_area, extrusion_height):
|
||||
surfaces = []
|
||||
for coordinates in polygons_coordinates:
|
||||
for polygon_coordinates in coordinates:
|
||||
@ -317,7 +331,7 @@ class Geojson:
|
||||
polygon = Polygon(coordinates)
|
||||
polygon.area = igh.ground_area(coordinates)
|
||||
surfaces[-1] = Surface(polygon, polygon)
|
||||
building = Building(f'{building_name}', surfaces, year_of_construction, function, adjacency)
|
||||
building = Building(f'{building_name}', surfaces, year_of_construction, function, adjacency, lot_area, build_area)
|
||||
for alias in building_aliases:
|
||||
building.add_alias(alias)
|
||||
if extrusion_height == 0:
|
||||
@ -352,7 +366,7 @@ class Geojson:
|
||||
polygon = Polygon(wall_coordinates)
|
||||
wall = Surface(polygon, polygon)
|
||||
surfaces.append(wall)
|
||||
building = Building(f'{building_name}', surfaces, year_of_construction, function, adjacency)
|
||||
building = Building(f'{building_name}', surfaces, year_of_construction, function, adjacency, lot_area, build_area)
|
||||
for alias in building_aliases:
|
||||
building.add_alias(alias)
|
||||
building.volume = volume
|
||||
|
@ -29,12 +29,16 @@ class GeometryFactory:
|
||||
function_field=None,
|
||||
function_to_hub=None,
|
||||
adjacency_field=None,
|
||||
build_area_field=None,
|
||||
lot_area_field=None,
|
||||
hub_crs=None,
|
||||
total_floor_area_field=None):
|
||||
self._file_type = '_' + file_type.lower()
|
||||
validate_import_export_type(GeometryFactory, file_type)
|
||||
self._path = path
|
||||
self._adjacency_field = adjacency_field
|
||||
self._build_area_field = build_area_field
|
||||
self._lot_area_field = lot_area_field
|
||||
self._aliases_field = aliases_field
|
||||
self._height_field = height_field
|
||||
self._centroid_x_field = centroid_x_field
|
||||
@ -79,6 +83,8 @@ class GeometryFactory:
|
||||
self._function_field,
|
||||
self._function_to_hub,
|
||||
self._adjacency_field,
|
||||
self._build_area_field,
|
||||
self._lot_area_field,
|
||||
self._hub_crs).city
|
||||
|
||||
@property
|
||||
|
@ -49,11 +49,11 @@ class ArchetypeBasedDemand:
|
||||
if function in ['residential', 'multifamily house', 'single family house']:
|
||||
if height < 6 and adjacency == 'detached':
|
||||
usage = 'Single Family'
|
||||
elif height < 6 and adjacency == 'attached':
|
||||
elif height < 6 and ((adjacency == 'attached') | (adjacency == 'semi-detached')):
|
||||
usage = 'Row house'
|
||||
elif 6 <= height <= 10 and adjacency == 'detached':
|
||||
usage = 'Duplex/triplex'
|
||||
elif 6 <= height <= 10 and adjacency == 'attached':
|
||||
elif 6 <= height <= 10 and ((adjacency == 'attached') | (adjacency == 'semi-detached')):
|
||||
usage = 'Small MURBs'
|
||||
elif 10 < height <= 15:
|
||||
usage = 'Medium MURBs'
|
||||
@ -65,7 +65,7 @@ class ArchetypeBasedDemand:
|
||||
usage = 'Office'
|
||||
elif function in ['commercial', 'retail shop without refrigerated food', 'retail shop with refrigerated food',
|
||||
'stand alone retail', 'strip mall']:
|
||||
if adjacency == 'attached':
|
||||
if (adjacency == 'attached') | (adjacency == 'semi-detached'):
|
||||
usage = 'Commercial attached'
|
||||
else:
|
||||
usage = 'Commercial detached'
|
||||
@ -117,7 +117,6 @@ class ArchetypeBasedDemand:
|
||||
def enrich(self):
|
||||
for building in self.city.buildings:
|
||||
archetype_key = self._get_archetype_key(building)
|
||||
print(archetype_key)
|
||||
if archetype_key and archetype_key in self.archetype_data:
|
||||
demand = self.archetype_data[archetype_key]
|
||||
area = building.thermal_zones_from_internal_zones[0].total_floor_area
|
||||
|
@ -1,4 +1,4 @@
|
||||
"""
|
||||
Hub version number
|
||||
"""
|
||||
__version__ = '0.2.0.14'
|
||||
__version__ = '0.2.0.15'
|
||||
|
68
main.py
68
main.py
@ -4,23 +4,25 @@ from hub.helpers.dictionaries import Dictionaries
|
||||
from hub.imports.construction_factory import ConstructionFactory
|
||||
from hub.imports.results_factory import ResultFactory
|
||||
from hub.exports.exports_factory import ExportsFactory
|
||||
import subprocess
|
||||
from pathlib import Path
|
||||
|
||||
from hub.imports.weather_factory import WeatherFactory
|
||||
from pv_assessment.electricity_demand_calculator import HourlyElectricityDemand
|
||||
from pv_assessment.pv_system_assessment import PvSystemAssessment
|
||||
from pv_assessment.solar_calculator import SolarCalculator
|
||||
import random_assignation
|
||||
import subprocess
|
||||
from pathlib import Path
|
||||
|
||||
input_file = "data/cmm_test_corrected.geojson"
|
||||
input_file = "data/selected_buildings.geojson"
|
||||
demand_file = "data/energy_demand_data.csv"
|
||||
|
||||
# Define specific paths for outputs from SRA (Simplified Radiosity Algorith) and PV calculation processes
|
||||
output_path = (Path(__file__).parent.parent / 'out_files').resolve()
|
||||
output_path = (Path(__file__).parent.parent / 'hub/out_files').resolve()
|
||||
output_path.mkdir(parents=True, exist_ok=True)
|
||||
sra_output_path = output_path / 'sra_outputs'
|
||||
sra_output_path.mkdir(parents=True, exist_ok=True)
|
||||
pv_assessment_path = output_path / 'pv_outputs'
|
||||
pv_assessment_path.mkdir(parents=True, exist_ok=True)
|
||||
|
||||
city = GeometryFactory(
|
||||
"geojson",
|
||||
input_file,
|
||||
@ -28,10 +30,13 @@ city = GeometryFactory(
|
||||
year_of_construction_field="contr_year",
|
||||
function_field="function_c",
|
||||
adjacency_field="adjacency",
|
||||
lot_area_field='lot_area',
|
||||
build_area_field='build_area',
|
||||
function_to_hub=Dictionaries().montreal_function_to_hub_function).city
|
||||
ConstructionFactory('nrcan', city).enrich()
|
||||
WeatherFactory('epw', city).enrich()
|
||||
ResultFactory('archetypes', city, demand_file).enrich()
|
||||
|
||||
# Export the city data in SRA-compatible format to facilitate solar radiation assessment
|
||||
ExportsFactory('sra', city, sra_output_path).export()
|
||||
# Run SRA simulation using an external command, passing the generated SRA XML file path as input
|
||||
@ -39,7 +44,7 @@ sra_path = (sra_output_path / f'{city.name}_sra.xml').resolve()
|
||||
subprocess.run(['sra', str(sra_path)])
|
||||
# Enrich city data with SRA simulation results for subsequent analysis
|
||||
ResultFactory('sra', city, sra_output_path).enrich()
|
||||
# # Initialize solar calculation parameters (e.g., azimuth, altitude) and compute irradiance and solar angles
|
||||
# Initialize solar calculation parameters (e.g., azimuth, altitude) and compute irradiance and solar angles
|
||||
tilt_angle = 37
|
||||
solar_parameters = SolarCalculator(city=city,
|
||||
surface_azimuth_angle=180,
|
||||
@ -48,17 +53,13 @@ solar_parameters = SolarCalculator(city=city,
|
||||
solar_angles = solar_parameters.solar_angles # Obtain solar angles for further analysis
|
||||
solar_parameters.tilted_irradiance_calculator() # Calculate the solar radiation on a tilted surface
|
||||
# Assignation of Energy System Archetypes to Buildings
|
||||
#TODO this needs to be modified. We should either use the existing percentages or assign systems based on building
|
||||
# functions
|
||||
for building in city.buildings:
|
||||
building.energy_systems_archetype_name = 'Grid Tied PV System'
|
||||
random_assignation.call_random(city.buildings, random_assignation.residential_systems_percentage)
|
||||
EnergySystemsFactory('montreal_future', city).enrich()
|
||||
for building in city.buildings:
|
||||
electricity_demand = HourlyElectricityDemand(building).calculate()
|
||||
PvSystemAssessment(building=building,
|
||||
pv_system=None,
|
||||
battery=None,
|
||||
electricity_demand=electricity_demand,
|
||||
electricity_demand=None,
|
||||
tilt_angle=tilt_angle,
|
||||
solar_angles=solar_angles,
|
||||
pv_installation_type='rooftop',
|
||||
@ -71,4 +72,47 @@ for building in city.buildings:
|
||||
csv_output=False,
|
||||
output_path=pv_assessment_path).enrich()
|
||||
|
||||
r = []
|
||||
for building in city.buildings:
|
||||
r.append((building.build_area - building.lot_area) / building.thermal_zones_from_internal_zones[0].total_floor_area)
|
||||
|
||||
print("done")
|
||||
|
||||
# PLOTTING #
|
||||
import geopandas as gpd
|
||||
import matplotlib.pyplot as plt
|
||||
from matplotlib.colors import Normalize
|
||||
|
||||
gdf = gpd.read_file(input_file)
|
||||
|
||||
self_sufficiency_values = [building.self_sufficiency['year'] / 1000 for building in city.buildings]
|
||||
|
||||
gdf['self_sufficiency'] = self_sufficiency_values
|
||||
|
||||
vmin = min(0, gdf['self_sufficiency'].min())
|
||||
vmax = max(0, gdf['self_sufficiency'].max())
|
||||
|
||||
fig, ax = plt.subplots(1, 1, figsize=(14, 10))
|
||||
|
||||
cmap = plt.cm.viridis
|
||||
norm = Normalize(vmin=vmin, vmax=vmax)
|
||||
|
||||
gdf.plot(column='self_sufficiency',
|
||||
cmap=cmap,
|
||||
linewidth=0.8,
|
||||
edgecolor='grey',
|
||||
legend=False,
|
||||
ax=ax)
|
||||
|
||||
sm = plt.cm.ScalarMappable(cmap=cmap, norm=norm)
|
||||
sm._A = []
|
||||
cbar = fig.colorbar(sm, ax=ax, fraction=0.03, pad=0.04)
|
||||
cbar.set_label('Self-Sufficiency (kWh/year)', fontsize=12)
|
||||
|
||||
ax.grid(color='lightgrey', linestyle='--', linewidth=0.5, alpha=0.7)
|
||||
ax.set_title('Building Self-Sufficiency Levels', fontsize=16, fontweight='bold', pad=20)
|
||||
ax.set_xlabel('Longitude', fontsize=12)
|
||||
ax.set_ylabel('Latitude', fontsize=12)
|
||||
|
||||
plt.tight_layout()
|
||||
plt.show()
|
||||
|
8764
out_files/sra_outputs/Cote-Saint-Luc.cli
Normal file
8764
out_files/sra_outputs/Cote-Saint-Luc.cli
Normal file
File diff suppressed because it is too large
Load Diff
2556
out_files/sra_outputs/Cote-Saint-Luc_sra.xml
Normal file
2556
out_files/sra_outputs/Cote-Saint-Luc_sra.xml
Normal file
File diff suppressed because it is too large
Load Diff
8761
out_files/sra_outputs/Cote-Saint-Luc_sra_SW.out
Normal file
8761
out_files/sra_outputs/Cote-Saint-Luc_sra_SW.out
Normal file
File diff suppressed because one or more lines are too long
@ -5,59 +5,60 @@ class HourlyElectricityDemand:
|
||||
|
||||
def calculate(self):
|
||||
hourly_electricity_consumption = []
|
||||
energy_systems = self.building.energy_systems
|
||||
# energy_systems = self.building.energy_systems
|
||||
appliance = self.building.appliances_electrical_demand[cte.HOUR] if self.building.appliances_electrical_demand else 0
|
||||
lighting = self.building.lighting_electrical_demand[cte.HOUR] if self.building.lighting_electrical_demand else 0
|
||||
elec_heating = 0
|
||||
elec_cooling = 0
|
||||
elec_dhw = 0
|
||||
if cte.HEATING in self.building.energy_consumption_breakdown[cte.ELECTRICITY]:
|
||||
elec_heating = 1
|
||||
if cte.COOLING in self.building.energy_consumption_breakdown[cte.ELECTRICITY]:
|
||||
elec_cooling = 1
|
||||
if cte.DOMESTIC_HOT_WATER in self.building.energy_consumption_breakdown[cte.ELECTRICITY]:
|
||||
elec_dhw = 1
|
||||
heating = None
|
||||
cooling = None
|
||||
dhw = None
|
||||
# elec_heating = 1
|
||||
# elec_cooling = 1
|
||||
# elec_dhw = 1
|
||||
# if cte.HEATING in self.building.energy_consumption_breakdown[cte.ELECTRICITY]:
|
||||
# elec_heating = 1
|
||||
# if cte.COOLING in self.building.energy_consumption_breakdown[cte.ELECTRICITY]:
|
||||
# elec_cooling = 1
|
||||
# if cte.DOMESTIC_HOT_WATER in self.building.energy_consumption_breakdown[cte.ELECTRICITY]:
|
||||
# elec_dhw = 1
|
||||
# heating = None
|
||||
# cooling = None
|
||||
# dhw = None
|
||||
|
||||
if elec_heating == 1:
|
||||
for energy_system in energy_systems:
|
||||
if cte.HEATING in energy_system.demand_types:
|
||||
for generation_system in energy_system.generation_systems:
|
||||
if generation_system.fuel_type == cte.ELECTRICITY:
|
||||
if cte.HEATING in generation_system.energy_consumption:
|
||||
heating = generation_system.energy_consumption[cte.HEATING][cte.HOUR]
|
||||
else:
|
||||
if len(energy_system.generation_systems) > 1:
|
||||
heating = [x / 2 for x in self.building.heating_consumption[cte.HOUR]]
|
||||
else:
|
||||
heating = self.building.heating_consumption[cte.HOUR]
|
||||
|
||||
if elec_dhw == 1:
|
||||
for energy_system in energy_systems:
|
||||
if cte.DOMESTIC_HOT_WATER in energy_system.demand_types:
|
||||
for generation_system in energy_system.generation_systems:
|
||||
if generation_system.fuel_type == cte.ELECTRICITY:
|
||||
if cte.DOMESTIC_HOT_WATER in generation_system.energy_consumption:
|
||||
dhw = generation_system.energy_consumption[cte.DOMESTIC_HOT_WATER][cte.HOUR]
|
||||
else:
|
||||
if len(energy_system.generation_systems) > 1:
|
||||
dhw = [x / 2 for x in self.building.domestic_hot_water_consumption[cte.HOUR]]
|
||||
else:
|
||||
dhw = self.building.domestic_hot_water_consumption[cte.HOUR]
|
||||
|
||||
if elec_cooling == 1:
|
||||
for energy_system in energy_systems:
|
||||
if cte.COOLING in energy_system.demand_types:
|
||||
for generation_system in energy_system.generation_systems:
|
||||
if cte.COOLING in generation_system.energy_consumption:
|
||||
cooling = generation_system.energy_consumption[cte.COOLING][cte.HOUR]
|
||||
else:
|
||||
if len(energy_system.generation_systems) > 1:
|
||||
cooling = [x / 2 for x in self.building.cooling_consumption[cte.HOUR]]
|
||||
else:
|
||||
cooling = self.building.cooling_consumption[cte.HOUR]
|
||||
# if elec_heating == 1:
|
||||
# for energy_system in energy_systems:
|
||||
# if cte.HEATING in energy_system.demand_types:
|
||||
# for generation_system in energy_system.generation_systems:
|
||||
# if generation_system.fuel_type == cte.ELECTRICITY:
|
||||
# if cte.HEATING in generation_system.energy_consumption:
|
||||
# heating = generation_system.energy_consumption[cte.HEATING][cte.HOUR]
|
||||
# else:
|
||||
# if len(energy_system.generation_systems) > 1:
|
||||
# heating = [x / 2 for x in self.building.heating_consumption[cte.HOUR]]
|
||||
# else:
|
||||
# heating = self.building.heating_consumption[cte.HOUR]
|
||||
heating = self.building.heating_demand[cte.HOUR] * 70
|
||||
# if elec_dhw == 1:
|
||||
# for energy_system in energy_systems:
|
||||
# if cte.DOMESTIC_HOT_WATER in energy_system.demand_types:
|
||||
# for generation_system in energy_system.generation_systems:
|
||||
# if generation_system.fuel_type == cte.ELECTRICITY:
|
||||
# if cte.DOMESTIC_HOT_WATER in generation_system.energy_consumption:
|
||||
# dhw = generation_system.energy_consumption[cte.DOMESTIC_HOT_WATER][cte.HOUR]
|
||||
# else:
|
||||
# if len(energy_system.generation_systems) > 1:
|
||||
# dhw = [x / 2 for x in self.building.domestic_hot_water_consumption[cte.HOUR]]
|
||||
# else:
|
||||
# dhw = self.building.domestic_hot_water_consumption[cte.HOUR]
|
||||
dhw = self.building.domestic_hot_water_heat_demand[cte.HOUR] * 70
|
||||
# if elec_cooling == 1:
|
||||
# for energy_system in energy_systems:
|
||||
# if cte.COOLING in energy_system.demand_types:
|
||||
# for generation_system in energy_system.generation_systems:
|
||||
# if cte.COOLING in generation_system.energy_consumption:
|
||||
# cooling = generation_system.energy_consumption[cte.COOLING][cte.HOUR]
|
||||
# else:
|
||||
# if len(energy_system.generation_systems) > 1:
|
||||
# cooling = [x / 2 for x in self.building.cooling_consumption[cte.HOUR]]
|
||||
# else:
|
||||
# cooling = self.building.cooling_consumption[cte.HOUR]
|
||||
cooling = self.building.cooling_demand[cte.HOUR]
|
||||
|
||||
for i in range(8760):
|
||||
hourly = 0
|
||||
@ -72,4 +73,5 @@ class HourlyElectricityDemand:
|
||||
if dhw is not None:
|
||||
hourly += dhw[i]
|
||||
hourly_electricity_consumption.append(hourly)
|
||||
self.building.distribution_systems_electrical_consumption = hourly_electricity_consumption
|
||||
return hourly_electricity_consumption
|
||||
|
@ -135,7 +135,7 @@ class PvSystemAssessment:
|
||||
if self.electricity_demand is not None:
|
||||
electricity_demand = self.electricity_demand
|
||||
else:
|
||||
electricity_demand = [demand / cte.WATTS_HOUR_TO_JULES for demand in
|
||||
electricity_demand = [demand*1000 for demand in
|
||||
HourlyElectricityDemand(self.building).calculate()]
|
||||
rooftops_pv_output = [0] * len(electricity_demand)
|
||||
facades_pv_output = [0] * len(electricity_demand)
|
||||
@ -158,13 +158,15 @@ class PvSystemAssessment:
|
||||
total_hourly_pv_output = [rooftops_pv_output[i] + facades_pv_output[i] for i in range(8760)]
|
||||
imported_electricity = [0] * 8760
|
||||
exported_electricity = [0] * 8760
|
||||
self.building.self_sufficiency['hour'] = []
|
||||
for i in range(len(electricity_demand)):
|
||||
transfer = total_hourly_pv_output[i] - electricity_demand[i]
|
||||
self.building.self_sufficiency['hour'].append(transfer)
|
||||
if transfer > 0:
|
||||
exported_electricity[i] = transfer
|
||||
else:
|
||||
imported_electricity[i] = abs(transfer)
|
||||
|
||||
self.building.self_sufficiency['year'] = sum(self.building.self_sufficiency['hour'])
|
||||
results = {'building_name': self.building.name,
|
||||
'total_floor_area_m2': self.building.thermal_zones_from_internal_zones[0].total_floor_area,
|
||||
'roof_area_m2': self.building.roofs[0].perimeter_area, 'rooftop_panels': rooftop_number_of_panels,
|
||||
|
0
pv_assessment/self_sufficiency.py
Normal file
0
pv_assessment/self_sufficiency.py
Normal file
@ -16,7 +16,7 @@ energy_systems_format = 'montreal_future'
|
||||
|
||||
# parameters:
|
||||
residential_systems_percentage = {
|
||||
'Central Hydronic Air and Gas Source Heating System with Unitary Split Cooling and Air Source HP DHW and Grid Tied PV': 100,
|
||||
'Central Hydronic Air and Gas Source Heating System with Unitary Split Cooling and Air Source HP DHW and Grid Tied PV': 0,
|
||||
'Central Hydronic Air and Electricity Source Heating System with Unitary Split Cooling and Air Source HP DHW and Grid Tied PV': 0,
|
||||
'Central Hydronic Ground and Gas Source Heating System with Unitary Split Cooling and Air Source HP DHW and Grid Tied PV': 0,
|
||||
'Central Hydronic Ground and Electricity Source Heating System with Unitary Split Cooling and Air Source HP DHW '
|
||||
@ -30,27 +30,27 @@ residential_systems_percentage = {
|
||||
'Central Hydronic Ground and Electricity Source Heating System with Unitary Split and Air Source HP DHW': 0,
|
||||
'Central Hydronic Water and Gas Source Heating System with Unitary Split and Air Source HP DHW': 0,
|
||||
'Central Hydronic Water and Electricity Source Heating System with Unitary Split and Air Source HP DHW': 0,
|
||||
'Grid Tied PV System': 0,
|
||||
'Grid Tied PV System': 10,
|
||||
'system 1 gas': 0,
|
||||
'system 1 gas grid tied pv': 0,
|
||||
'system 1 gas grid tied pv': 5,
|
||||
'system 1 electricity': 0,
|
||||
'system 1 electricity grid tied pv': 0,
|
||||
'system 1 electricity grid tied pv': 10,
|
||||
'system 2 gas': 0,
|
||||
'system 2 gas grid tied pv': 0,
|
||||
'system 2 gas grid tied pv': 10,
|
||||
'system 2 electricity': 0,
|
||||
'system 2 electricity grid tied pv': 0,
|
||||
'system 2 electricity grid tied pv': 10,
|
||||
'system 3 and 4 gas': 0,
|
||||
'system 3 and 4 gas grid tied pv': 0,
|
||||
'system 3 and 4 gas grid tied pv': 10,
|
||||
'system 3 and 4 electricity': 0,
|
||||
'system 3 and 4 electricity grid tied pv': 0,
|
||||
'system 3 and 4 electricity grid tied pv': 5,
|
||||
'system 6 gas': 0,
|
||||
'system 6 gas grid tied pv': 0,
|
||||
'system 6 gas grid tied pv': 10,
|
||||
'system 6 electricity': 0,
|
||||
'system 6 electricity grid tied pv': 0,
|
||||
'system 6 electricity grid tied pv': 10,
|
||||
'system 8 gas': 0,
|
||||
'system 8 gas grid tied pv': 0,
|
||||
'system 8 gas grid tied pv': 10,
|
||||
'system 8 electricity': 0,
|
||||
'system 8 electricity grid tied pv': 0,
|
||||
'system 8 electricity grid tied pv': 10,
|
||||
}
|
||||
|
||||
non_residential_systems_percentage = {'system 1 gas': 0,
|
||||
@ -102,8 +102,9 @@ def _retrieve_buildings(path, year_of_construction_field=None,
|
||||
def call_random(_buildings: [Building], _systems_percentage):
|
||||
_buildings_with_systems = []
|
||||
_systems_distribution = []
|
||||
_selected_buildings = list(range(0, len(_buildings)))
|
||||
_selected_buildings = list(range(len(_buildings)))
|
||||
random.shuffle(_selected_buildings)
|
||||
|
||||
total = 0
|
||||
maximum = 0
|
||||
add_to = 0
|
||||
@ -116,14 +117,24 @@ def call_random(_buildings: [Building], _systems_percentage):
|
||||
maximum = number_of_buildings
|
||||
add_to = len(_systems_distribution) - 1
|
||||
total += number_of_buildings
|
||||
missing = 0
|
||||
if total != len(_selected_buildings):
|
||||
missing = len(_selected_buildings) - total
|
||||
if missing != 0:
|
||||
|
||||
missing = len(_selected_buildings) - total
|
||||
if missing > 0:
|
||||
_systems_distribution[add_to]['number_of_buildings'] += missing
|
||||
elif missing < 0:
|
||||
for case in sorted(_systems_distribution, key=lambda x: -x['number_of_buildings']):
|
||||
if case['number_of_buildings'] > 0:
|
||||
reduce_by = min(-missing, case['number_of_buildings'])
|
||||
case['number_of_buildings'] -= reduce_by
|
||||
missing += reduce_by
|
||||
if missing == 0:
|
||||
break
|
||||
total = sum(case['number_of_buildings'] for case in _systems_distribution)
|
||||
assert total == len(_selected_buildings), f"Final total {total} does not match available {len(_selected_buildings)}"
|
||||
|
||||
_position = 0
|
||||
for case in _systems_distribution:
|
||||
for i in range(0, case['number_of_buildings']):
|
||||
for _ in range(case['number_of_buildings']):
|
||||
_buildings[_selected_buildings[_position]].energy_systems_archetype_name = case['system']
|
||||
_position += 1
|
||||
return _buildings
|
||||
|
19
select_features.py
Normal file
19
select_features.py
Normal file
@ -0,0 +1,19 @@
|
||||
import geopandas as gpd
|
||||
from shapely.geometry import Polygon
|
||||
|
||||
points = [
|
||||
(-73.65522099550455, 45.47216648812992),
|
||||
(-73.65201191054271, 45.47096942503966),
|
||||
(-73.65299060423152, 45.46955428052838),
|
||||
(-73.65532718525228, 45.47041615556808),
|
||||
(-73.65522099550455, 45.47216648812992)
|
||||
]
|
||||
|
||||
bounding_polygon = Polygon(points)
|
||||
|
||||
geojson_path = './data/cerc_cmm_corrected.geojson'
|
||||
gdf = gpd.read_file(geojson_path)
|
||||
|
||||
filtered_gdf = gdf[gdf.intersects(bounding_polygon)]
|
||||
|
||||
filtered_gdf.to_file("./data/selected_buildings.geojson", driver="GeoJSON")
|
Loading…
Reference in New Issue
Block a user