diff --git a/Pipfile b/Pipfile index 9d84185..88c8fec 100644 --- a/Pipfile +++ b/Pipfile @@ -26,6 +26,7 @@ Fiona = "==1.8.20" GDAL = "==3.3.2" Shapely = "==1.7.1" pydrive = "*" +boto3 = "*" [dev-packages] pre-commit = "*" diff --git a/Pipfile.lock b/Pipfile.lock index 446f721..58aaa4c 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "c816977cd5329e5b65b1f8755befbaf80c0b8f64f6848c75a113f1a0c40ab426" + "sha256": "7c902f4f210a4fe6f8f6ed61221b8142fdd19acd241fa0d5c2589198d686faac" }, "pipfile-spec": 6, "requires": { @@ -24,13 +24,29 @@ "index": "pypi", "version": "==21.2.0" }, + "boto3": { + "hashes": [ + "sha256:021f2a71cbcd75c87724b7dfbf28a691f07899345047f6bc999ef646d97461df", + "sha256:cb1f1d443672a65e23756cc712d060222e53e68d0700af60b4d904125d9186db" + ], + "index": "pypi", + "version": "==1.24.32" + }, + "botocore": { + "hashes": [ + "sha256:10eb15e178f9e1aef679fd1d7dbeba11c851859e09f6c1a2e334287bd8ed3a7e", + "sha256:d510a1d1956a18b6fa4b74b1b5dfbe8a7ca83f5ca4f59c43c368e143425f3725" + ], + "markers": "python_version >= '3.7'", + "version": "==1.27.32" + }, "cachetools": { "hashes": [ - "sha256:486471dfa8799eb7ec503a8059e263db000cdda20075ce5e48903087f79d5fd6", - "sha256:8fecd4203a38af17928be7b90689d8083603073622229ca7077b72d8e5a976e4" + "sha256:6a94c6402995a99c3970cc7e4884bb60b4a8639938157eeed436098bf9831757", + "sha256:f9f17d2aec496a9aa6b76f53e3b614c965223c061982d434d160f930c698a9db" ], "markers": "python_version ~= '3.7'", - "version": "==5.0.0" + "version": "==5.2.0" }, "certifi": { "hashes": [ @@ -42,11 +58,11 @@ }, "charset-normalizer": { "hashes": [ - "sha256:2857e29ff0d34db842cd7ca3230549d1a697f96ee6d3fb071cfa6c7393832597", - "sha256:6881edbebdb17b39b4eaaa821b438bf6eddffb4468cf344f09f89def34a8b1df" + "sha256:5189b6f22b01957427f35b6a08d9a0bc45b46d3788ef5a92e978433c7a35f8a5", + "sha256:575e708016ff3a5e3681541cb9d79312c416835686d054a23accb873b254f413" ], - "markers": "python_version >= '3'", - "version": "==2.0.12" + "markers": "python_version >= '3.6'", + "version": "==2.1.0" }, "click": { "hashes": [ @@ -112,27 +128,27 @@ }, "google-api-core": { "hashes": [ - "sha256:6be1fc59e2a7ba9f66808bbc22f976f81e4c3e7ab20fa0620ce42686288787d0", - "sha256:b0fa577e512f0c8e063386b974718b8614586a798c5894ed34bedf256d9dae24" + "sha256:06f7244c640322b508b125903bb5701bebabce8832f85aba9335ec00b3d02edc", + "sha256:93c6a91ccac79079ac6bbf8b74ee75db970cc899278b97d53bc012f35908cf50" ], "markers": "python_version >= '3.6'", - "version": "==2.7.1" + "version": "==2.8.2" }, "google-api-python-client": { "hashes": [ - "sha256:080d4be6c66aa95fb530916844cb2601645daf5e5a1ce8d2bc57b8c72f1c7cf6", - "sha256:bf969a84cf882958999cf6de35928bf5ae3957637d5842060798e5d39b0ba1e5" + "sha256:904b3d687e28b53f4dde236b45e443c6387e173614e99183dc5b8acdbd370d18", + "sha256:bbb05d6f342346461d6ead2f7e49c73f07a57a9372150c4557c75dca0888669e" ], - "markers": "python_version >= '3.6'", - "version": "==2.40.0" + "markers": "python_version >= '3.7'", + "version": "==2.53.0" }, "google-auth": { "hashes": [ - "sha256:218ca03d7744ca0c8b6697b6083334be7df49b7bf76a69d555962fd1a7657b5f", - "sha256:ad160fc1ea8f19e331a16a14a79f3d643d813a69534ba9611d2c80dc10439dad" + "sha256:14292fa3429f2bb1e99862554cde1ee730d6840ebae067814d3d15d8549c0888", + "sha256:5a7eed0cb0e3a83989fad0b59fe1329dfc8c479543039cd6fd1e01e9adf39475" ], "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5'", - "version": "==2.6.0" + "version": "==2.9.1" }, "google-auth-httplib2": { "hashes": [ @@ -143,11 +159,11 @@ }, "googleapis-common-protos": { "hashes": [ - "sha256:183bb0356bd614c4330ad5158bc1c1bcf9bcf7f5e7f911317559fe209496eeee", - "sha256:53eb313064738f45d5ac634155ae208e121c963659627b90dfcb61ef514c03e1" + "sha256:8eb2cbc91b69feaf23e32452a7ae60e791e09967d81d4fcc7fc388182d1bd394", + "sha256:c25873c47279387cfdcbdafa36149887901d36202cb645a0e4f29686bf6e4417" ], - "markers": "python_version >= '3.6'", - "version": "==1.55.0" + "markers": "python_version >= '3.7'", + "version": "==1.56.4" }, "httplib2": { "hashes": [ @@ -162,9 +178,25 @@ "sha256:84d9dd047ffa80596e0f246e2eab0b391788b0503584e8945f2368256d2735ff", "sha256:9d643ff0a55b762d5cdb124b8eaa99c66322e2157b69160bc32796e824360e6d" ], - "markers": "python_version >= '3'", + "markers": "python_version >= '3.5'", "version": "==3.3" }, + "importlib-metadata": { + "hashes": [ + "sha256:637245b8bab2b6502fcbc752cc4b7a6f6243bb02b31c5c26156ad103d3d45670", + "sha256:7401a975809ea1fdc658c3aa4f78cc2195a0e019c5cbc4c06122884e9ae80c23" + ], + "markers": "python_version < '3.8'", + "version": "==4.12.0" + }, + "jmespath": { + "hashes": [ + "sha256:02e2e4cc71b5bcab88332eebf907519190dd9e6e82107fa7f83b1003a6252980", + "sha256:90261b206d6defd58fdd5e85f478bf633a2901798906be2ad389150c5c60edbe" + ], + "markers": "python_version >= '3.7'", + "version": "==1.0.1" + }, "jsonschema": { "hashes": [ "sha256:2b3cca28580511d44326f0e7fc582eab3cbe31aabd1a1c2cfa74a399796ffd84", @@ -261,35 +293,23 @@ }, "protobuf": { "hashes": [ - "sha256:072fbc78d705d3edc7ccac58a62c4c8e0cec856987da7df8aca86e647be4e35c", - "sha256:09297b7972da685ce269ec52af761743714996b4381c085205914c41fcab59fb", - "sha256:16f519de1313f1b7139ad70772e7db515b1420d208cb16c6d7858ea989fc64a9", - "sha256:1c91ef4110fdd2c590effb5dca8fdbdcb3bf563eece99287019c4204f53d81a4", - "sha256:3112b58aac3bac9c8be2b60a9daf6b558ca3f7681c130dcdd788ade7c9ffbdca", - "sha256:36cecbabbda242915529b8ff364f2263cd4de7c46bbe361418b5ed859677ba58", - "sha256:4276cdec4447bd5015453e41bdc0c0c1234eda08420b7c9a18b8d647add51e4b", - "sha256:435bb78b37fc386f9275a7035fe4fb1364484e38980d0dd91bc834a02c5ec909", - "sha256:48ed3877fa43e22bcacc852ca76d4775741f9709dd9575881a373bd3e85e54b2", - "sha256:54a1473077f3b616779ce31f477351a45b4fef8c9fd7892d6d87e287a38df368", - "sha256:69da7d39e39942bd52848438462674c463e23963a1fdaa84d88df7fbd7e749b2", - "sha256:6cbc312be5e71869d9d5ea25147cdf652a6781cf4d906497ca7690b7b9b5df13", - "sha256:7bb03bc2873a2842e5ebb4801f5c7ff1bfbdf426f85d0172f7644fcda0671ae0", - "sha256:7ca7da9c339ca8890d66958f5462beabd611eca6c958691a8fe6eccbd1eb0c6e", - "sha256:835a9c949dc193953c319603b2961c5c8f4327957fe23d914ca80d982665e8ee", - "sha256:84123274d982b9e248a143dadd1b9815049f4477dc783bf84efe6250eb4b836a", - "sha256:8961c3a78ebfcd000920c9060a262f082f29838682b1f7201889300c1fbe0616", - "sha256:96bd766831596d6014ca88d86dc8fe0fb2e428c0b02432fd9db3943202bf8c5e", - "sha256:9df0c10adf3e83015ced42a9a7bd64e13d06c4cf45c340d2c63020ea04499d0a", - "sha256:b38057450a0c566cbd04890a40edf916db890f2818e8682221611d78dc32ae26", - "sha256:bd95d1dfb9c4f4563e6093a9aa19d9c186bf98fa54da5252531cc0d3a07977e7", - "sha256:c1068287025f8ea025103e37d62ffd63fec8e9e636246b89c341aeda8a67c934", - "sha256:c438268eebb8cf039552897d78f402d734a404f1360592fef55297285f7f953f", - "sha256:cdc076c03381f5c1d9bb1abdcc5503d9ca8b53cf0a9d31a9f6754ec9e6c8af0f", - "sha256:f358aa33e03b7a84e0d91270a4d4d8f5df6921abe99a377828839e8ed0c04e07", - "sha256:f51d5a9f137f7a2cec2d326a74b6e3fc79d635d69ffe1b036d39fc7d75430d37" + "sha256:095fda15fe04a79c9f0edab09b424be46dd057b15986d235b84c8cea91659df7", + "sha256:29eaf8e9db33bc3bae14576ad61370aa2b64ea5d6e6cd705042692e5e0404b10", + "sha256:4758b9c22ad0486639a68cea58d38571f233019a73212d78476ec648f68a49a3", + "sha256:57a593e40257ab4f164fe6e171651b1386c98f8ec5f5a8643642889c50d4f3c4", + "sha256:5f8c7488e74024fa12b46aab4258f707d7d6e94c8d322d7c45cc13770f66ab59", + "sha256:7b2dcca25d88ec77358eed3d031c8260b5bf3023fff03a31c9584591c5910833", + "sha256:853708afc3a7eed4df28a8d4bd4812f829f8d736c104dd8d584ccff27969e311", + "sha256:863f65e137d9de4a76cac39ae731a19bea1c30997f512ecf0dc9348112313401", + "sha256:9b42afb67e19010cdda057e439574ccd944902ea14b0d52ba0bfba2aad50858d", + "sha256:b82ac05b0651a4d2b9d56f5aeef3d711f5858eb4b71c13d77553739e5930a74a", + "sha256:d622dc75e289e8b3031dd8b4e87df508f11a6b3d86a49fb50256af7ce030d35b", + "sha256:e3d3df3292ab4bae85213b9ebef566b5aedb45f97425a92fac5b2e431d31e71c", + "sha256:ef0768a609a02b2b412fa0f59f1242f1597e9bb15188d043f3fde09115ca6c69", + "sha256:f2f43ae8dff452aee3026b59ea0a09245ab2529a55a0984992e76bcf848610e1" ], - "markers": "python_version >= '3.5'", - "version": "==3.19.4" + "markers": "python_version >= '3.7'", + "version": "==4.21.2" }, "psycopg2-binary": { "hashes": [ @@ -379,11 +399,11 @@ }, "pyparsing": { "hashes": [ - "sha256:18ee9022775d270c55187733956460083db60b37d0d0fb357445f3094eed3eea", - "sha256:a6c06a88f252e6c322f65faf8f418b16213b51bdfaece0524c1c1bc30c63c484" + "sha256:2b020ecf7d21b687f219b71ecad3631f644a47f01403fa1d1036b0c6416d70fb", + "sha256:5026bae9a10eeaefb61dab2f09052b9f4307d44aee4eda64b309723d8d206bbc" ], "markers": "python_version >= '3.1'", - "version": "==3.0.7" + "version": "==3.0.9" }, "pyproj": { "hashes": [ @@ -495,11 +515,11 @@ }, "requests": { "hashes": [ - "sha256:68d7c56fd5a8999887728ef304a6d12edc7be74f1cfa47714fc8b414525c9a61", - "sha256:f22fa1e554c9ddfd16e6e41ac79759e17be9e492b3587efa038054674760e72d" + "sha256:7c5599b102feddaa661c826c56ab4fee28bfd17f5abca1ebbe3e7f19d7c97983", + "sha256:8fefa2a1a1365bf5520aac41836fbee479da67864514bdb821f31ce07ce65349" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5'", - "version": "==2.27.1" + "markers": "python_version >= '3.7' and python_version < '4'", + "version": "==2.28.1" }, "rsa": { "hashes": [ @@ -509,6 +529,14 @@ "markers": "python_version >= '3.6'", "version": "==4.8" }, + "s3transfer": { + "hashes": [ + "sha256:06176b74f3a15f61f1b4f25a1fc29a4429040b7647133a463da8fa5bd28d5ecd", + "sha256:2ed07d3866f523cc561bf4a00fc5535827981b117dd7876f036b0c1aca42c947" + ], + "markers": "python_version >= '3.7'", + "version": "==0.6.0" + }, "shapely": { "hashes": [ "sha256:052eb5b9ba756808a7825e8a8020fb146ec489dd5c919e7d139014775411e688", @@ -546,6 +574,14 @@ "index": "pypi", "version": "==1.16.0" }, + "typing-extensions": { + "hashes": [ + "sha256:25642c956049920a5aa49edcdd6ab1e06d7e5d467fc00e0506c44ac86fbfca02", + "sha256:e6d2677a32f47fc7eb2795db1dd15c1f34eff616bcaf2cfb5e997f854fa1c4a6" + ], + "markers": "python_version < '3.8'", + "version": "==4.3.0" + }, "uritemplate": { "hashes": [ "sha256:4346edfc5c3b79f694bccd6d6099a322bbeb628dbf2cd86eea55a456ce5124f0", @@ -556,11 +592,19 @@ }, "urllib3": { "hashes": [ - "sha256:000ca7f471a233c2251c6c7023ee85305721bfdf18621ebff4fd17a8653427ed", - "sha256:0e7c33d9a63e7ddfcb86780aac87befc2fbddf46c58dbb487e0855f7ceec283c" + "sha256:8298d6d56d39be0e3bc13c1c97d133f9b45d797169a0e11cdd0e0489d786f7ec", + "sha256:879ba4d1e89654d9769ce13121e0f94310ea32e8d2f8cf587b77c08bbcdb30d6" + ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5' and python_version < '4'", + "version": "==1.26.10" + }, + "zipp": { + "hashes": [ + "sha256:05b45f1ee8f807d0cc928485ca40a07cb491cf092ff587c0df9cb1fd154848d2", + "sha256:47c40d7fe183a6f21403a199b3e4192cca5774656965b0a4988ad2f8feb5f009" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' and python_version < '4'", - "version": "==1.26.8" + "markers": "python_version >= '3.7'", + "version": "==3.8.1" } }, "develop": { @@ -574,49 +618,58 @@ }, "distlib": { "hashes": [ - "sha256:6564fe0a8f51e734df6333d08b8b94d4ea8ee6b99b5ed50613f731fd4089f34b", - "sha256:e4b58818180336dc9c529bfb9a0b58728ffc09ad92027a3f30b7cd91e3458579" + "sha256:a7f75737c70be3b25e2bee06288cec4e4c221de18455b2dd037fe2a795cab2fe", + "sha256:b710088c59f06338ca514800ad795a132da19fda270e3ce4affc74abf955a26c" ], - "version": "==0.3.4" + "version": "==0.3.5" }, "filelock": { "hashes": [ - "sha256:9cd540a9352e432c7246a48fe4e8712b10acb1df2ad1f30e8c070b82ae1fed85", - "sha256:f8314284bfffbdcfa0ff3d7992b023d4c628ced6feb957351d4c48d059f56bc0" + "sha256:37def7b658813cda163b56fc564cdc75e86d338246458c4c28ae84cabefa2404", + "sha256:3a0fd85166ad9dbab54c9aec96737b744106dc5f15c0b09a6744a445299fcf04" ], "markers": "python_version >= '3.7'", - "version": "==3.6.0" + "version": "==3.7.1" }, "identify": { "hashes": [ - "sha256:2986942d3974c8f2e5019a190523b0b0e2a07cb8e89bf236727fb4b26f27f8fd", - "sha256:fd906823ed1db23c7a48f9b176a1d71cb8abede1e21ebe614bac7bdd688d9213" + "sha256:0dca2ea3e4381c435ef9c33ba100a78a9b40c0bab11189c7cf121f75815efeaa", + "sha256:3d11b16f3fe19f52039fb7e39c9c884b21cb1b586988114fbe42671f03de3e82" ], "markers": "python_version >= '3.7'", - "version": "==2.4.11" + "version": "==2.5.1" + }, + "importlib-metadata": { + "hashes": [ + "sha256:637245b8bab2b6502fcbc752cc4b7a6f6243bb02b31c5c26156ad103d3d45670", + "sha256:7401a975809ea1fdc658c3aa4f78cc2195a0e019c5cbc4c06122884e9ae80c23" + ], + "markers": "python_version < '3.8'", + "version": "==4.12.0" }, "nodeenv": { "hashes": [ - "sha256:3ef13ff90291ba2a4a7a4ff9a979b63ffdd00a464dbe04acf0ea6471517a4c2b", - "sha256:621e6b7076565ddcacd2db0294c0381e01fd28945ab36bcf00f41c5daf63bef7" + "sha256:27083a7b96a25f2f5e1d8cb4b6317ee8aeda3bdd121394e5ac54e498028a042e", + "sha256:e0e7f7dfb85fc5394c6fe1e8fa98131a2473e04311a45afb6508f7cf1836fa2b" ], - "version": "==1.6.0" + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5, 3.6'", + "version": "==1.7.0" }, "platformdirs": { "hashes": [ - "sha256:7535e70dfa32e84d4b34996ea99c5e432fa29a708d0f4e394bbcb2a8faa4f16d", - "sha256:bcae7cab893c2d310a711b70b24efb93334febe65f8de776ee320b517471e227" + "sha256:027d8e83a2d7de06bbac4e5ef7e023c02b863d7ea5d079477e722bb41ab25788", + "sha256:58c8abb07dcb441e6ee4b11d8df0ac856038f944ab98b7be6b27b2a3c7feef19" ], "markers": "python_version >= '3.7'", - "version": "==2.5.1" + "version": "==2.5.2" }, "pre-commit": { "hashes": [ - "sha256:725fa7459782d7bec5ead072810e47351de01709be838c2ce1726b9591dad616", - "sha256:c1a8040ff15ad3d648c70cc3e55b93e4d2d5b687320955505587fd79bbaed06a" + "sha256:51a5ba7c480ae8072ecdb6933df22d2f812dc897d5fe848778116129a681aac7", + "sha256:a978dac7bc9ec0bcee55c18a277d553b0f419d259dadb4b9418ff2d00eb43959" ], "index": "pypi", - "version": "==2.17.0" + "version": "==2.20.0" }, "pyyaml": { "hashes": [ @@ -673,13 +726,29 @@ "markers": "python_version >= '2.6' and python_version not in '3.0, 3.1, 3.2, 3.3'", "version": "==0.10.2" }, + "typing-extensions": { + "hashes": [ + "sha256:25642c956049920a5aa49edcdd6ab1e06d7e5d467fc00e0506c44ac86fbfca02", + "sha256:e6d2677a32f47fc7eb2795db1dd15c1f34eff616bcaf2cfb5e997f854fa1c4a6" + ], + "markers": "python_version < '3.8'", + "version": "==4.3.0" + }, "virtualenv": { "hashes": [ - "sha256:dd448d1ded9f14d1a4bfa6bfc0c5b96ae3be3f2d6c6c159b23ddcfd701baa021", - "sha256:e9dd1a1359d70137559034c0f5433b34caf504af2dc756367be86a5a32967134" + "sha256:288171134a2ff3bfb1a2f54f119e77cd1b81c29fc1265a2356f3e8d14c7d58c4", + "sha256:b30aefac647e86af6d82bfc944c556f8f1a9c90427b2fb4e3bfbf338cb82becf" ], "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", - "version": "==20.13.3" + "version": "==20.15.1" + }, + "zipp": { + "hashes": [ + "sha256:05b45f1ee8f807d0cc928485ca40a07cb491cf092ff587c0df9cb1fd154848d2", + "sha256:47c40d7fe183a6f21403a199b3e4192cca5774656965b0a4988ad2f8feb5f009" + ], + "markers": "python_version >= '3.7'", + "version": "==3.8.1" } } } diff --git a/src/__init__.py b/src/__init__.py new file mode 100644 index 0000000..8648978 --- /dev/null +++ b/src/__init__.py @@ -0,0 +1,33 @@ +""" +Please use this only in settings.py +helper functions for getting env var +""" +import os +from distutils.util import strtobool + + +def get_str(var_name, default=None): + + return os.getenv(var_name) or default + + +def get_bool(var_name, default=None): + + value = os.getenv(var_name) or default + + return bool(strtobool(value)) + + +def get_list(var_name, default=None): + value = os.getenv(var_name) + + return value.split(",") if value else default + + +def get_int(var_name, default): + try: + value = os.getenv(var_name) + + return int(value) if value else default + except ValueError: + raise Exception(f"{var_name} not an int value") diff --git a/src/geo_intersect.py b/src/geo_intersect.py new file mode 100644 index 0000000..32d3165 --- /dev/null +++ b/src/geo_intersect.py @@ -0,0 +1,194 @@ +import geopandas as gpd +import pandas as pd +import os +import boto3 +from botocore.exceptions import ClientError +from pathlib import Path +import time +import datetime +import logging + +from __init__ import get_str +from os.path import abspath, dirname + +s3_client = boto3.client( + "s3", + region_name=get_str("REGION"), + aws_access_key_id=get_str("AWS_ACCESS_KEY_ID"), + aws_secret_access_key=get_str("AWS_SECRET_ACCESS_KEY"), +) + +logger = logging.getLogger(__name__) +formatter = logging.Formatter("%(asctime)s:%(name)s:%(message)s") +file_handler = logging.FileHandler(dirname(abspath(__file__)) + "/error.log") +file_handler.setLevel(logging.ERROR) +file_handler.setFormatter(formatter) +logger.addHandler(file_handler) + +logging.basicConfig( + filename="info.log", level=logging.INFO, format="%(asctime)s: %(message)s" +) + +def geo_intersect(): + start_time = time.time() + + dir_path = os.getcwd() + store_path = os.path.join(dir_path, "geojson/") + Path(store_path).mkdir(exist_ok=True, parents=True) + + bldg_req = 'https://upri-noah.s3.ap-southeast-1.amazonaws.com/critical_facilities/bldgs-qc-faci.geojson' + bldg_df = gpd.read_file(bldg_req) + bldg_df = bldg_df.to_crs('EPSG:32651') + + # haz_req = 'https://upri-noah.s3.ap-southeast-1.amazonaws.com/test/qc_brgy_fh_100yr.geojson' + haz_req = 'https://upri-noah.s3.ap-southeast-1.amazonaws.com/critical_facilities/qc_fh_100yr.geojson' + haz_df = gpd.read_file(haz_req) + haz_df = haz_df.to_crs('EPSG:32651') + + df_dict = [] + to_df = [] + for index, bldg_row in bldg_df.iterrows(): + p1 = bldg_row.geometry + store_dict = {} + geom = [] + store_dict2 = {"Name":'', "Low Hazard":0,"Medium Hazard":0, "High Hazard":0, "All Hazard":0, "geometry": None} + + for index2, haz_row in haz_df.iterrows(): + p2 = haz_row.geometry + intersect = p1.intersects(p2) + haz_lvl = haz_row.Var + if intersect == True: + poly_intersect = p1.intersection(p2) + geom.append(poly_intersect) + area = (p1.intersection(p2).area) + area = round(area * 100) / 100 + union = gpd.GeoSeries(geom).unary_union + store_dict2["Name"] = bldg_row.Name_2 + print(area) + if haz_lvl == 1.0: + store_dict2["Low Hazard"] = area + store_dict2["geometry"] = union + elif haz_lvl == 2.0: + store_dict2["Medium Hazard"] = area + store_dict2["geometry"] = union + + elif haz_lvl == 3.0: + store_dict2["High Hazard"] = area + store_dict2["geometry"] = union + + store_dict[bldg_row.Name_2] = store_dict2 + if store_dict: + overall = store_dict[bldg_row.Name_2]['Low Hazard'] + store_dict[bldg_row.Name_2]['Medium Hazard'] + store_dict[bldg_row.Name_2]['High Hazard'] + store_dict[bldg_row.Name_2]['All Hazard'] = overall + df_dict.append(store_dict[bldg_row.Name_2]) + polygon_geom2 = store_dict[bldg_row.Name_2]['geometry'] + to_df.append(polygon_geom2) + + df = pd.DataFrame(df_dict) + gdf = gpd.GeoDataFrame(df, geometry=to_df) + gdf = gdf.set_crs("EPSG:32651") + gdf = gdf.to_crs("EPSG:4326") + full_path = os.path.join(store_path, "bldg_haz_intersect.geojson") + + gdf.to_file(full_path, driver='GeoJSON') + end = (time.time() - start_time) + + td = datetime.timedelta(seconds=end) + logging.info("done processing building intersect geojson") + logging.info('Time processed in building intersect: hh:mm:ss:', td) + +def pop_intersect(): + start_time = time.time() + dir_path = os.getcwd() + store_path = os.path.join(dir_path, "geojson/") + + popu_req = 'https://upri-noah.s3.ap-southeast-1.amazonaws.com/test/QC_FB_Bgy.geojson' + popu_df = gpd.read_file(popu_req) + popu_df = popu_df.to_crs('EPSG:32651') + + # haz_req = 'https://upri-noah.s3.ap-southeast-1.amazonaws.com/test/qc_brgy_fh_100yr.geojson' + haz_req = 'https://upri-noah.s3.ap-southeast-1.amazonaws.com/critical_facilities/qc_fh_100yr.geojson' + haz_df = gpd.read_file(haz_req) + haz_df = haz_df.to_crs('EPSG:32651') + + df_dict = [] + to_df = [] + for index, popu_row in popu_df.iterrows(): + p1 = popu_row.geometry + store_dict = {} + geom = [] + store_dict2 = {"Name":'', "Low Hazard":0,"Medium Hazard":0, "High Hazard":0, "All Hazard":0, "geometry": None} + # print(popu_row.A1) + a1 = popu_row.A1 + pop_2015 = popu_row.Pop2015 + for index2, haz_row in haz_df.iterrows(): + p2 = haz_row.geometry + intersect = p1.intersects(p2) + haz_lvl = haz_row.Var + if intersect == True: + poly_intersect = p1.intersection(p2) + geom.append(poly_intersect) + area = (p1.intersection(p2).area) + area = round(area * 100) / 100 + union = gpd.GeoSeries(geom).unary_union + store_dict2["Name"] = popu_row.Bgy_Name + affected_formula = (area / a1) * pop_2015 + affected_formula = round(affected_formula / 1000000, 5) + # affected_formula = round(affected_formula * 100) / 100 + print(popu_row.Bgy_Name, area, affected_formula) + if haz_lvl == 1.0: + store_dict2["Low Hazard"] = affected_formula + store_dict2["geometry"] = union + elif haz_lvl == 2.0: + store_dict2["Medium Hazard"] = affected_formula + store_dict2["geometry"] = union + + elif haz_lvl == 3.0: + store_dict2["High Hazard"] = affected_formula + store_dict2["geometry"] = union + + store_dict[popu_row.Bgy_Name] = store_dict2 + + if store_dict: + overall = store_dict[popu_row.Bgy_Name]['Low Hazard'] + store_dict[popu_row.Bgy_Name]['Medium Hazard'] + store_dict[popu_row.Bgy_Name]['High Hazard'] + store_dict[popu_row.Bgy_Name]['All Hazard'] = overall + df_dict.append(store_dict[popu_row.Bgy_Name]) + polygon_geom2 = store_dict[popu_row.Bgy_Name]['geometry'] + to_df.append(polygon_geom2) + end = (time.time() - start_time) + + td = datetime.timedelta(seconds=end) + logging.info("done processing population intersect geojson") + logging.info('Time processed in processing population intersect: hh:mm:ss:', td) + df = pd.DataFrame(df_dict) + gdf = gpd.GeoDataFrame(df, geometry=to_df) + gdf = gdf.set_crs("EPSG:32651") + gdf = gdf.to_crs("EPSG:4326") + full_path = os.path.join(store_path, "popu_haz_intersect.geojson") + gdf.to_file(full_path, driver='GeoJSON') + +def s3_upload(): + dir_path = os.getcwd() + store_path = os.path.join(dir_path, "geojson/") + for file in os.listdir(store_path): + full_path = os.path.join(store_path, file) + if file == "bldg_haz_intersect.geojson": + try: + s3_client.upload_file( + full_path, + "upri-noah", + "test/bldg_haz_intersect.geojson", + ExtraArgs={"ContentType": "application/json", "ACL": "public-read"}, + ) + + except ClientError as e: # noqa: F841 + return False + logging.info("done uploading in s3") + + + +if __name__ == "__main__": + geo_intersect() + pop_intersect() + s3_upload() +