From 4c7234d42df53a26679a97e975a54ecd4bbe340f Mon Sep 17 00:00:00 2001 From: Maneesh7012 Date: Sat, 16 Sep 2023 12:14:57 +0530 Subject: [PATCH] api version 2 --- src/api/.gitignore | 135 - src/api/Dockerfile | 15 + src/api/README.md | 99 - src/api/alembic.ini | 22 +- src/api/alembic/env.py | 12 +- src/api/alembic/script.py.mako | 4 +- .../0270e53bf5f9_create_region_table.py | 29 + ...dd_datafromvector_column_in_layerconfig.py | 24 - .../14dedf473cc9_create_parameter_table.py | 29 - .../246d59b983ad_create_warehouse_table.py | 38 - .../28da5d5be2ad_create_layers_table.py | 63 + .../28e51bb9c878_create_weather_data_table.py | 37 - .../398abc40f57c_create_layer_table.py | 41 - .../3d060e8d529d_create_new_usecase_table.py | 39 + .../56b09e64cd25_create_parameters_table.py | 30 + .../56de15d98076_create_market_yard_table.py | 32 - ...583c79074d1f_create_downloadables_table.py | 29 - ...5dc24c7056e5_add_a_column_in_tbl_layers.py | 24 - ...5eb2_add_category_column_in_layer_table.py | 23 - .../6ae0bc32ba1c_create_downloads_table.py | 35 - ...17f06a069ae_create_download_files_table.py | 24 - ...8c77cd97a4d3_create_downloadables_table.py | 31 + .../95525cd23d81_create_usecase_table.py | 38 + .../976e4e92566d_create_usecase_table.py | 36 - ...faae_add_citation_column_in_layer_table.py | 26 - ...a7a696640d4_add_timerangefilter_coloumn.py | 24 - .../dbf7ccb05c06_create_downloads_table.py | 35 + ...2d_add_showcustom_column_in_layerconfig.py | 24 - .../versions/e3c33d243285_update_usecase.py | 24 + ...29a_add_standards_column_in_layer_table.py | 24 - ..._add_isavailable_coloumn_in_layer_table.py | 24 - src/api/app/assets/Cropfire.geojson | 1 + .../assets}/TS_district_boundary.json | 0 src/api/app/assets/warehouses.geojson | 2638 +++++++++++++++++ src/api/app/auth/auth.py | 11 + src/api/app/config/config.py | 21 + src/api/{db/database.py => app/db/db.py} | 13 +- src/api/app/main.py | 53 + src/api/app/models/category.py | 7 + src/api/app/models/downloadable.py | 9 + src/api/{ => app}/models/downloads.py | 13 +- src/api/app/models/index.py | 7 + src/api/app/models/layers.py | 28 + src/api/app/models/parameters.py | 9 + src/api/app/models/regions.py | 7 + src/api/{ => app}/models/usecase.py | 14 +- src/api/app/routes/category_route.py | 37 + src/api/app/routes/cropfire_route.py | 103 + src/api/app/routes/current_layer.py | 35 + .../routes/custom_district_route.py} | 25 +- .../routes/custom_shape_route.py} | 56 +- src/api/app/routes/download_route.py | 80 + src/api/app/routes/index.py | 16 + src/api/app/routes/layer_details_route.py | 66 + src/api/app/routes/layer_route.py | 352 +++ .../lulc.py => app/routes/lulc_route.py} | 42 +- src/api/app/routes/parameter_route.py | 0 src/api/app/routes/pixel_route.py | 75 + src/api/app/routes/raster_route.py | 16 + src/api/app/routes/region_route.py | 27 + src/api/app/routes/trend_route.py | 104 + src/api/app/routes/usecase.py | 70 + src/api/app/routes/vector_route.py | 25 + src/api/app/routes/warehouse_route.py | 21 + src/api/app/schemas/category.py | 5 + .../point.py => app/schemas/cropfire.py} | 4 - .../schemas/custom_district.py} | 6 +- .../custom.py => app/schemas/custom_shape.py} | 3 +- src/api/app/schemas/downloadables.py | 6 + src/api/app/schemas/index.py | 12 + src/api/app/schemas/layer.py | 34 + src/api/{ => app}/schemas/lulc.py | 4 +- src/api/app/schemas/parameter.py | 7 + src/api/app/schemas/pixel.py | 8 + src/api/app/schemas/region.py | 5 + src/api/{ => app}/schemas/trend.py | 10 +- src/api/{ => app}/schemas/usecase.py | 20 +- src/api/app/utils/util.py | 21 + src/api/cmd.txt | 12 + src/api/docker-compose.yml | 24 + src/api/example_calls/district.json | 921 ++++++ src/api/example_calls/get_zstat.json | 923 ++++++ src/api/example_calls/trend.json | 916 ++++++ src/api/gunicorn.py | 18 +- src/api/main.py | 92 - src/api/models/downlodables.py | 9 - src/api/models/fireevents.py | 21 - src/api/models/index.py | 11 - src/api/models/job.py | 12 - src/api/models/layer.py | 28 - src/api/models/market_yard.py | 34 - src/api/models/parameters.py | 9 - src/api/models/warehouse.py | 20 - src/api/models/weather.py | 17 - src/api/requirements.txt | 86 +- src/api/routes/currentlayer.py | 99 - src/api/routes/downloadlayer.py | 36 - src/api/routes/fireevents.py | 134 - src/api/routes/index.py | 15 - src/api/routes/layer.py | 67 - src/api/routes/market_yard.py | 123 - src/api/routes/parameter.py | 23 - src/api/routes/trend.py | 147 - src/api/routes/usecase.py | 74 - src/api/routes/userdownload.py | 172 -- src/api/routes/vector.py | 45 - src/api/routes/warehouse.py | 53 - src/api/routes/weatherdata.py | 89 - src/api/runtime.txt | 1 + src/api/schemas/downloadables.py | 5 - src/api/schemas/index.py | 10 - src/api/schemas/layer.py | 28 - src/api/schemas/market_name.py | 20 - src/api/schemas/weather.py | 15 - 114 files changed, 7167 insertions(+), 2338 deletions(-) delete mode 100644 src/api/.gitignore create mode 100644 src/api/Dockerfile delete mode 100644 src/api/README.md create mode 100644 src/api/alembic/versions/0270e53bf5f9_create_region_table.py delete mode 100644 src/api/alembic/versions/0c9e141a9f0e_add_datafromvector_column_in_layerconfig.py delete mode 100644 src/api/alembic/versions/14dedf473cc9_create_parameter_table.py delete mode 100644 src/api/alembic/versions/246d59b983ad_create_warehouse_table.py create mode 100644 src/api/alembic/versions/28da5d5be2ad_create_layers_table.py delete mode 100644 src/api/alembic/versions/28e51bb9c878_create_weather_data_table.py delete mode 100644 src/api/alembic/versions/398abc40f57c_create_layer_table.py create mode 100644 src/api/alembic/versions/3d060e8d529d_create_new_usecase_table.py create mode 100644 src/api/alembic/versions/56b09e64cd25_create_parameters_table.py delete mode 100644 src/api/alembic/versions/56de15d98076_create_market_yard_table.py delete mode 100644 src/api/alembic/versions/583c79074d1f_create_downloadables_table.py delete mode 100644 src/api/alembic/versions/5dc24c7056e5_add_a_column_in_tbl_layers.py delete mode 100644 src/api/alembic/versions/65cef9815eb2_add_category_column_in_layer_table.py delete mode 100644 src/api/alembic/versions/6ae0bc32ba1c_create_downloads_table.py delete mode 100644 src/api/alembic/versions/817f06a069ae_create_download_files_table.py create mode 100644 src/api/alembic/versions/8c77cd97a4d3_create_downloadables_table.py create mode 100644 src/api/alembic/versions/95525cd23d81_create_usecase_table.py delete mode 100644 src/api/alembic/versions/976e4e92566d_create_usecase_table.py delete mode 100644 src/api/alembic/versions/c7b5a8e6faae_add_citation_column_in_layer_table.py delete mode 100644 src/api/alembic/versions/ca7a696640d4_add_timerangefilter_coloumn.py create mode 100644 src/api/alembic/versions/dbf7ccb05c06_create_downloads_table.py delete mode 100644 src/api/alembic/versions/de1f9ec54d2d_add_showcustom_column_in_layerconfig.py create mode 100644 src/api/alembic/versions/e3c33d243285_update_usecase.py delete mode 100644 src/api/alembic/versions/fbae44b0f29a_add_standards_column_in_layer_table.py delete mode 100644 src/api/alembic/versions/fe1f33dae5d1_add_isavailable_coloumn_in_layer_table.py create mode 100644 src/api/app/assets/Cropfire.geojson rename src/api/{boundaries => app/assets}/TS_district_boundary.json (100%) create mode 100644 src/api/app/assets/warehouses.geojson create mode 100644 src/api/app/auth/auth.py create mode 100644 src/api/app/config/config.py rename src/api/{db/database.py => app/db/db.py} (55%) create mode 100644 src/api/app/main.py create mode 100644 src/api/app/models/category.py create mode 100644 src/api/app/models/downloadable.py rename src/api/{ => app}/models/downloads.py (63%) create mode 100644 src/api/app/models/index.py create mode 100644 src/api/app/models/layers.py create mode 100644 src/api/app/models/parameters.py create mode 100644 src/api/app/models/regions.py rename src/api/{ => app}/models/usecase.py (61%) create mode 100644 src/api/app/routes/category_route.py create mode 100644 src/api/app/routes/cropfire_route.py create mode 100644 src/api/app/routes/current_layer.py rename src/api/{routes/customdistrict.py => app/routes/custom_district_route.py} (52%) rename src/api/{routes/customshape.py => app/routes/custom_shape_route.py} (50%) create mode 100644 src/api/app/routes/download_route.py create mode 100644 src/api/app/routes/index.py create mode 100644 src/api/app/routes/layer_details_route.py create mode 100644 src/api/app/routes/layer_route.py rename src/api/{routes/lulc.py => app/routes/lulc_route.py} (81%) create mode 100644 src/api/app/routes/parameter_route.py create mode 100644 src/api/app/routes/pixel_route.py create mode 100644 src/api/app/routes/raster_route.py create mode 100644 src/api/app/routes/region_route.py create mode 100644 src/api/app/routes/trend_route.py create mode 100644 src/api/app/routes/usecase.py create mode 100644 src/api/app/routes/vector_route.py create mode 100644 src/api/app/routes/warehouse_route.py create mode 100644 src/api/app/schemas/category.py rename src/api/{schemas/point.py => app/schemas/cropfire.py} (67%) rename src/api/{schemas/customdistrict.py => app/schemas/custom_district.py} (82%) rename src/api/{schemas/custom.py => app/schemas/custom_shape.py} (87%) create mode 100644 src/api/app/schemas/downloadables.py create mode 100644 src/api/app/schemas/index.py create mode 100644 src/api/app/schemas/layer.py rename src/api/{ => app}/schemas/lulc.py (80%) create mode 100644 src/api/app/schemas/parameter.py create mode 100644 src/api/app/schemas/pixel.py create mode 100644 src/api/app/schemas/region.py rename src/api/{ => app}/schemas/trend.py (51%) rename src/api/{ => app}/schemas/usecase.py (53%) create mode 100644 src/api/app/utils/util.py create mode 100644 src/api/cmd.txt create mode 100644 src/api/docker-compose.yml create mode 100644 src/api/example_calls/district.json create mode 100644 src/api/example_calls/get_zstat.json create mode 100644 src/api/example_calls/trend.json delete mode 100644 src/api/main.py delete mode 100644 src/api/models/downlodables.py delete mode 100644 src/api/models/fireevents.py delete mode 100644 src/api/models/index.py delete mode 100644 src/api/models/job.py delete mode 100644 src/api/models/layer.py delete mode 100644 src/api/models/market_yard.py delete mode 100644 src/api/models/parameters.py delete mode 100644 src/api/models/warehouse.py delete mode 100644 src/api/models/weather.py delete mode 100644 src/api/routes/currentlayer.py delete mode 100644 src/api/routes/downloadlayer.py delete mode 100644 src/api/routes/fireevents.py delete mode 100644 src/api/routes/index.py delete mode 100644 src/api/routes/layer.py delete mode 100644 src/api/routes/market_yard.py delete mode 100644 src/api/routes/parameter.py delete mode 100644 src/api/routes/trend.py delete mode 100644 src/api/routes/usecase.py delete mode 100644 src/api/routes/userdownload.py delete mode 100644 src/api/routes/vector.py delete mode 100644 src/api/routes/warehouse.py delete mode 100644 src/api/routes/weatherdata.py create mode 100644 src/api/runtime.txt delete mode 100644 src/api/schemas/downloadables.py delete mode 100644 src/api/schemas/index.py delete mode 100644 src/api/schemas/layer.py delete mode 100644 src/api/schemas/market_name.py delete mode 100644 src/api/schemas/weather.py diff --git a/src/api/.gitignore b/src/api/.gitignore deleted file mode 100644 index bb7ca7d3..00000000 --- a/src/api/.gitignore +++ /dev/null @@ -1,135 +0,0 @@ -# Byte-compiled / optimized / DLL files -__pycache__/ -*.py[cod] -*$py.class - -# C extensions -*.so - -# Distribution / packaging -.Python -build/ -develop-eggs/ -dist/ -downloads/ -eggs/ -.eggs/ -lib/ -lib64/ -parts/ -sdist/ -var/ -wheels/ -pip-wheel-metadata/ -share/python-wheels/ -*.egg-info/ -.installed.cfg -*.egg -MANIFEST - -# PyInstaller -# Usually these files are written by a python script from a template -# before PyInstaller builds the exe, so as to inject date/other infos into it. -*.manifest -*.spec - -# Installer logs -pip-log.txt -pip-delete-this-directory.txt - -# Unit test / coverage reports -htmlcov/ -.tox/ -.nox/ -.coverage -.coverage.* -.cache -nosetests.xml -coverage.xml -*.cover -*.py,cover -.hypothesis/ -.pytest_cache/ - -# Translations -*.mo -*.pot - -# Django stuff: -*.log -local_settings.py -db.sqlite3 -db.sqlite3-journal - -# Flask stuff: -instance/ -.webassets-cache - -# Scrapy stuff: -.scrapy - -# Sphinx documentation -docs/_build/ - -# PyBuilder -target/ - -# Jupyter Notebook -.ipynb_checkpoints - -# IPython -profile_default/ -ipython_config.py - -# pyenv -.python-version - -# pipenv -# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. -# However, in case of collaboration, if having platform-specific dependencies or dependencies -# having no cross-platform support, pipenv may install dependencies that don't work, or not -# install all needed dependencies. -#Pipfile.lock - -# PEP 582; used by e.g. github.com/David-OConnor/pyflow -__pypackages__/ - -# Celery stuff -celerybeat-schedule -celerybeat.pid - -# SageMath parsed files -*.sage.py - -# Environments -.env -.venv -env/ -venv/ -ENV/ -env.bak/ -venv.bak/ - -# Spyder project settings -.spyderproject -.spyproject - -# Rope project settings -.ropeproject - -# mkdocs documentation -/site - -# mypy -.mypy_cache/ -.dmypy.json -dmypy.json - -# Pyre type checker -.pyre/ -#config -config/ -# static files -static/ -# temporary files -temp_files/ diff --git a/src/api/Dockerfile b/src/api/Dockerfile new file mode 100644 index 00000000..da6204c0 --- /dev/null +++ b/src/api/Dockerfile @@ -0,0 +1,15 @@ +FROM osgeo/gdal:ubuntu-small-3.2.0 + +RUN apt-get update +RUN apt-get -y install python3-pip +RUN pip install rasterstats +RUN pip uninstall fastapi python-multipart +RUN pip install fastapi python-multipart + +WORKDIR /app + +COPY requirements.txt . +RUN pip install --no-cache-dir -r requirements.txt +COPY . . +EXPOSE 8000 +# CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8000"] \ No newline at end of file diff --git a/src/api/README.md b/src/api/README.md deleted file mode 100644 index cfd96065..00000000 --- a/src/api/README.md +++ /dev/null @@ -1,99 +0,0 @@ -# DiCRA - Backend API -### What is repository for? ### -This repository has the API code for our application. -### How do I get set up? ### -#### Running Backend Server using Uvicorn (Development server) -It requires Ubuntu, Python, PostgreSQL with PostGIS extension. -To run the API Server using Uvicorn do the following. -- Install all required packages using the command - ```sh - pip install -r requirements.txt - ``` -- Change Database connection url on sqlalchemy.url in alembic.ini and SQLALCHEMY_DATABASE_URL in **/db/database.py** -- To run database migration, use - ```sh - alembic upgrade head - ``` - It will create all the necessary tables. -- Finally we can run the Uvicorn development server using the command - ```sh - python main.py - ``` - it will start a Uvicorn development server on - ```sh - http://localhost:5004 - ``` - ## Running Backend server using Gunicorn systemmd managed unit service and Caddy -To run Backend server using Gunicorn systemmd managed unit service and Caddy as Reverse Proxy do the following. -- Create conda virtual environment using the command - ```sh - conda create -n environmentname python=3 - ``` -- Activate the conda virtual environment using the command - ```sh - conda activate environmentname - ``` -- Install all the required packages using - ```sh - pip install -r requirements.txt - ``` -- Change Database connection url on sqlalchemy.url in alembic.ini and SQLALCHEMY_DATABASE_URL in **/db/database.py** -- To run database migration, use - ```sh - alembic upgrade head - ``` - It will create all the necessary tables -- Delete line 70 and 71 from main.py -- Change User, Group,WorkingDirectory, Environment in the gunicorn.service file in this repository -- Create a Gunicorn service by running - ```sh - sudo nano /etc/systemd/system/gunicorn.service - ``` - and copy and paste all the changed content in the provious step from gunicorn.service file -- Register the unit file gunicorn.service with Systemd by executing the following commands. - ```sh - sudo systemctl daemon-reload - sudo systemctl enable gunicorn.service - sudo systemctl start gunicorn.service - ``` - The systemctl enable command will add our Gunicorn service to resume running when the VM reboots. - - The systemctl start command will quickly start the Gunicorn service and invokes the ExecStart command. - - To check the status of our gunicorn.service at any point of time, run the following command. - ```sh - sudo systemctl status gunicorn.service - ``` -- Install Caddy 2 web server - - We can install Caddy web server using the following commands - ```sh - echo "deb [trusted=yes] https://apt.fury.io/caddy/ /" | sudo tee -a /etc/apt/sources.list.d/caddy-fury.list - sudo apt update - sudo apt install -y caddy - ``` - We can check the Caddy server status by running - ```sh - systemctl status caddy - ``` -- Now we will configure our Caddy 2 Web server to serve the FastAPI app running on port 8000 via a reverse proxy. To do so, lets edit the /etc/caddy/Caddyfile by running the following command. - ```sh - sudo nano /etc/caddy/Caddyfile - ``` - Replace the contents of the Caddyfile and it should look like below - ```sh - :80 - reverse_proxy 0.0.0.0:8000 - ``` - Restart the caddy server by running the following command - ```sh - sudo systemctl restart caddy - ``` -### Configuration File ### -Set the appropriate parameters in the config.ini in the **/config** folder. Given below are the various parameters that needs to be entered in this file. -- Temporaryfiles - Temporary file path -- Accounturl - Azure Storage account url -- Containername - Azure Storage container name -- Districtboundary - District boundary path stored in **/boundaries** folder - -Also, the backend service uses Azure blob for storing files. Please set up the appropriate storage account and containers in Azure. \ No newline at end of file diff --git a/src/api/alembic.ini b/src/api/alembic.ini index 5a1e5aff..d9f94e0c 100644 --- a/src/api/alembic.ini +++ b/src/api/alembic.ini @@ -4,8 +4,11 @@ # path to migration scripts script_location = alembic -# template used to generate migration files -# file_template = %%(rev)s_%%(slug)s +# template used to generate migration file names; The default value is %%(rev)s_%%(slug)s +# Uncomment the line below if you want the files to be prepended with date and time +# see https://alembic.sqlalchemy.org/en/latest/tutorial.html#editing-the-ini-file +# for all available tokens +# file_template = %%(year)d_%%(month).2d_%%(day).2d_%%(hour).2d%%(minute).2d-%%(rev)s_%%(slug)s # sys.path path, will be prepended to sys.path if present. # defaults to the current working directory. @@ -35,22 +38,29 @@ prepend_sys_path = . # version location specification; This defaults # to alembic/versions. When using multiple version # directories, initial revisions must be specified with --version-path. -# The path separator used here should be the separator specified by "version_path_separator" +# The path separator used here should be the separator specified by "version_path_separator" below. # version_locations = %(here)s/bar:%(here)s/bat:alembic/versions # version path separator; As mentioned above, this is the character used to split -# version_locations. Valid values are: +# version_locations. The default within new alembic.ini files is "os", which uses os.pathsep. +# If this key is omitted entirely, it falls back to the legacy behavior of splitting on spaces and/or commas. +# Valid values for version_path_separator are: # # version_path_separator = : # version_path_separator = ; # version_path_separator = space -version_path_separator = os # default: use os.pathsep +version_path_separator = os # Use os.pathsep. Default configuration used for new projects. + +# set to 'true' to search source files recursively +# in each "version_locations" directory +# new in Alembic version 1.10 +# recursive_version_locations = false # the output encoding used when revision files # are written from script.py.mako # output_encoding = utf-8 -sqlalchemy.url = postgresql://uname:password@host/database +sqlalchemy.url = driver://user:pass@localhost/dbname [post_write_hooks] diff --git a/src/api/alembic/env.py b/src/api/alembic/env.py index 70518a2e..fdcd610e 100644 --- a/src/api/alembic/env.py +++ b/src/api/alembic/env.py @@ -1,17 +1,19 @@ from logging.config import fileConfig - from sqlalchemy import engine_from_config from sqlalchemy import pool from alembic import context +from app.config.config import settings # this is the Alembic Config object, which provides # access to the values within the .ini file in use. config = context.config +config.set_main_option('sqlalchemy.url', settings.POSTGRES_CONNECTION_STRING) # Interpret the config file for Python logging. # This line sets up loggers basically. -fileConfig(config.config_file_name) +if config.config_file_name is not None: + fileConfig(config.config_file_name) # add your model's MetaData object here # for 'autogenerate' support @@ -25,7 +27,7 @@ # ... etc. -def run_migrations_offline(): +def run_migrations_offline() -> None: """Run migrations in 'offline' mode. This configures the context with just a URL @@ -49,7 +51,7 @@ def run_migrations_offline(): context.run_migrations() -def run_migrations_online(): +def run_migrations_online() -> None: """Run migrations in 'online' mode. In this scenario we need to create an Engine @@ -57,7 +59,7 @@ def run_migrations_online(): """ connectable = engine_from_config( - config.get_section(config.config_ini_section), + config.get_section(config.config_ini_section, {}), prefix="sqlalchemy.", poolclass=pool.NullPool, ) diff --git a/src/api/alembic/script.py.mako b/src/api/alembic/script.py.mako index 2c015630..55df2863 100644 --- a/src/api/alembic/script.py.mako +++ b/src/api/alembic/script.py.mako @@ -16,9 +16,9 @@ branch_labels = ${repr(branch_labels)} depends_on = ${repr(depends_on)} -def upgrade(): +def upgrade() -> None: ${upgrades if upgrades else "pass"} -def downgrade(): +def downgrade() -> None: ${downgrades if downgrades else "pass"} diff --git a/src/api/alembic/versions/0270e53bf5f9_create_region_table.py b/src/api/alembic/versions/0270e53bf5f9_create_region_table.py new file mode 100644 index 00000000..77c3f77e --- /dev/null +++ b/src/api/alembic/versions/0270e53bf5f9_create_region_table.py @@ -0,0 +1,29 @@ +"""Create region table + +Revision ID: 0270e53bf5f9 +Revises: +Create Date: 2023-04-07 02:53:03.704691 + +""" +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = '0270e53bf5f9' +down_revision = None +branch_labels = None +depends_on = None + + +def upgrade() -> None: + op.create_table( + 'regions', + sa.Column('id', sa.Integer(), nullable=False), + sa.Column('name', sa.String(length=50), nullable=False), + sa.PrimaryKeyConstraint('id') + ) + + +def downgrade() -> None: + op.drop_table('layers') diff --git a/src/api/alembic/versions/0c9e141a9f0e_add_datafromvector_column_in_layerconfig.py b/src/api/alembic/versions/0c9e141a9f0e_add_datafromvector_column_in_layerconfig.py deleted file mode 100644 index 8e92848a..00000000 --- a/src/api/alembic/versions/0c9e141a9f0e_add_datafromvector_column_in_layerconfig.py +++ /dev/null @@ -1,24 +0,0 @@ -"""Add datafromvector column in layerconfig - -Revision ID: 0c9e141a9f0e -Revises: de1f9ec54d2d -Create Date: 2022-04-18 12:48:15.112864 - -""" -from alembic import op -import sqlalchemy as sa - - -# revision identifiers, used by Alembic. -revision = '0c9e141a9f0e' -down_revision = 'de1f9ec54d2d' -branch_labels = None -depends_on = None - - -def upgrade(): - op.add_column('tbl_layers', sa.Column('datafromvector',sa.Boolean)) - - -def downgrade(): - op.drop_column('tbl_layers', 'datafromvector') diff --git a/src/api/alembic/versions/14dedf473cc9_create_parameter_table.py b/src/api/alembic/versions/14dedf473cc9_create_parameter_table.py deleted file mode 100644 index e66a31fd..00000000 --- a/src/api/alembic/versions/14dedf473cc9_create_parameter_table.py +++ /dev/null @@ -1,29 +0,0 @@ -"""create parameter table - -Revision ID: 14dedf473cc9 -Revises: 398abc40f57c -Create Date: 2021-12-20 13:52:58.721477 - -""" -from alembic import op -import sqlalchemy as sa - - -# revision identifiers, used by Alembic. -revision = '14dedf473cc9' -down_revision = '398abc40f57c' -branch_labels = None -depends_on = None - - -def upgrade(): - op.create_table( - 'tbl_parameters', - sa.Column('id',sa.Integer,primary_key=True), - sa.Column('parameter_name',sa.String(255)), - sa.Column('available_date',sa.Date) - ) - - -def downgrade(): - op.drop_table('tbl_parameters') diff --git a/src/api/alembic/versions/246d59b983ad_create_warehouse_table.py b/src/api/alembic/versions/246d59b983ad_create_warehouse_table.py deleted file mode 100644 index b19e6324..00000000 --- a/src/api/alembic/versions/246d59b983ad_create_warehouse_table.py +++ /dev/null @@ -1,38 +0,0 @@ -"""create warehouse table - -Revision ID: 246d59b983ad -Revises: 56de15d98076 -Create Date: 2022-03-23 14:52:11.829727 - -""" -from alembic import op -import sqlalchemy as sa - - -# revision identifiers, used by Alembic. -revision = '246d59b983ad' -down_revision = '56de15d98076' -branch_labels = None -depends_on = None - - -def upgrade(): - op.create_table( - 'tbl_warehouses', - sa.Column('id',sa.Integer,primary_key=True), - sa.Column('region',sa.String(255)), - sa.Column('wh_type',sa.String(255)), - sa.Column('warehouse',sa.String(255)), - sa.Column('district',sa.String(255)), - sa.Column('capacity',sa.String(255)), - sa.Column('occupancy',sa.String(255)), - sa.Column('vacancy',sa.String(255)), - sa.Column('latitude',sa.String(255)), - sa.Column('longitude',sa.String(255)), - sa.Column('address',sa.Text), - sa.Column('status',sa.String(255)) - ) - - -def downgrade(): - op.drop_table('tbl_warehouses') diff --git a/src/api/alembic/versions/28da5d5be2ad_create_layers_table.py b/src/api/alembic/versions/28da5d5be2ad_create_layers_table.py new file mode 100644 index 00000000..ef5a9989 --- /dev/null +++ b/src/api/alembic/versions/28da5d5be2ad_create_layers_table.py @@ -0,0 +1,63 @@ +"""Create layers table + +Revision ID: 28da5d5be2ad +Revises: 0270e53bf5f9 +Create Date: 2023-04-07 03:07:51.026903 + +""" +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = '28da5d5be2ad' +down_revision = '0270e53bf5f9' +branch_labels = None +depends_on = None + + +def upgrade() -> None: + op.create_table( + 'category', + sa.Column('id', sa.Integer(), nullable=False), + sa.Column('category_name', sa.String(length=255), nullable=True), + sa.PrimaryKeyConstraint('id') + ) + + + op.create_table( + 'layers', + sa.Column('id', sa.Integer(), nullable=False), + sa.Column('unit', sa.String(length=255), nullable=True), + sa.Column('xaxislabel', sa.String(length=255), nullable=True), + sa.Column('isavailable', sa.Boolean(), nullable=True), + sa.Column('layer_name', sa.String(length=255), nullable=True), + sa.Column('citation', sa.Text(), nullable=True), + sa.Column('last_updated', sa.DateTime(), nullable=True), + sa.Column('standards', sa.Text(), nullable=True), + sa.Column('short_description', sa.Text(), nullable=True), + sa.Column('raster_status', sa.Boolean(), nullable=True), + sa.Column('timerangefilter', sa.Boolean(), nullable=True), + sa.Column('long_description', sa.Text(), nullable=True), + sa.Column('vector_status', sa.Boolean(), nullable=True), + sa.Column('showcustom', sa.Boolean(), nullable=True), + sa.Column('source', sa.String(length=255), nullable=True), + sa.Column('multiple_files', sa.Boolean(), nullable=True), + sa.Column('datafromvector', sa.Boolean(), nullable=True), + sa.Column('url', sa.String(length=255), nullable=True), + sa.Column('display_name', sa.String(length=255), nullable=True), + sa.Column('yaxislabel', sa.String(length=255), nullable=True), + sa.Column('region_id', sa.Integer(), nullable=False), + sa.Column('category_id', sa.Integer(), nullable=False), + sa.ForeignKeyConstraint(['region_id'], ['regions.id'], ), + sa.ForeignKeyConstraint(['category_id'], ['category.id'], ), + sa.PrimaryKeyConstraint('id') + ) + + +def downgrade() -> None: + op.drop_table('layers') + op.drop_table('category') + + + diff --git a/src/api/alembic/versions/28e51bb9c878_create_weather_data_table.py b/src/api/alembic/versions/28e51bb9c878_create_weather_data_table.py deleted file mode 100644 index c3cb662b..00000000 --- a/src/api/alembic/versions/28e51bb9c878_create_weather_data_table.py +++ /dev/null @@ -1,37 +0,0 @@ -"""create weather data table - -Revision ID: 28e51bb9c878 -Revises: 65cef9815eb2 -Create Date: 2022-02-17 13:28:57.279677 - -""" -from alembic import op -import sqlalchemy as sa - - -# revision identifiers, used by Alembic. -revision = '28e51bb9c878' -down_revision = '65cef9815eb2' -branch_labels = None -depends_on = None - - -def upgrade(): - op.create_table( - 'tbl_weather', - sa.Column('id',sa.Integer,primary_key=True), - sa.Column('district',sa.String(255)), - sa.Column('mandal',sa.String(255)), - sa.Column('data_date',sa.Date), - sa.Column('rain',sa.String(200)), - sa.Column('min_temp',sa.String(200)), - sa.Column('max_temp',sa.String(200)), - sa.Column('min_humidity',sa.String(200)), - sa.Column('max_humidity',sa.String(200)), - sa.Column('min_wind_speed',sa.String(200)), - sa.Column('max_wind_speed',sa.String(200)) - ) - - -def downgrade(): - op.drop_table('tbl_weather') diff --git a/src/api/alembic/versions/398abc40f57c_create_layer_table.py b/src/api/alembic/versions/398abc40f57c_create_layer_table.py deleted file mode 100644 index 76ee241e..00000000 --- a/src/api/alembic/versions/398abc40f57c_create_layer_table.py +++ /dev/null @@ -1,41 +0,0 @@ -"""Create layer table - -Revision ID: 398abc40f57c -Revises: 976e4e92566d -Create Date: 2021-12-17 15:28:48.413560 - -""" -from alembic import op -import sqlalchemy as sa - - -# revision identifiers, used by Alembic. -revision = '398abc40f57c' -down_revision = '976e4e92566d' -branch_labels = None -depends_on = None - - -def upgrade(): - op.create_table( - 'tbl_layers', - sa.Column('id',sa.Integer,primary_key=True), - sa.Column('layer_name',sa.String(255)), - sa.Column('short_description',sa.Text), - sa.Column('long_description',sa.Text), - sa.Column('source',sa.String(255)), - sa.Column('url',sa.String(255)), - sa.Column('unit',sa.String(255)), - sa.Column('color',sa.String(255)), - sa.Column('update_frequnecy',sa.Integer), - sa.Column('last_updated',sa.DateTime), - sa.Column('raster_status',sa.Boolean), - sa.Column('vector_status',sa.Boolean), - sa.Column('multiple_files',sa.Boolean), - - ) - - -def downgrade(): - op.drop_table('tbl_layers') - diff --git a/src/api/alembic/versions/3d060e8d529d_create_new_usecase_table.py b/src/api/alembic/versions/3d060e8d529d_create_new_usecase_table.py new file mode 100644 index 00000000..3148c478 --- /dev/null +++ b/src/api/alembic/versions/3d060e8d529d_create_new_usecase_table.py @@ -0,0 +1,39 @@ +"""Create new usecase table + +Revision ID: 3d060e8d529d +Revises: e3c33d243285 +Create Date: 2023-05-06 14:02:51.791072 + +""" +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = '3d060e8d529d' +down_revision = 'e3c33d243285' +branch_labels = None +depends_on = None + + +def upgrade() -> None: + op.create_table( + 'tbl_usecases', + sa.Column('id', sa.Integer(), nullable=False, primary_key=True), + sa.Column('project_name', sa.String(length=255), nullable=True), + sa.Column('project_type', sa.String(length=255), nullable=True), + sa.Column('short_description', sa.Text(), nullable=True), + sa.Column('long_description', sa.Text(), nullable=True), + sa.Column('url', sa.String(length=255), nullable=True), + sa.Column('image', sa.String(length=255), nullable=True), + sa.Column('username', sa.String(length=255), nullable=True), + sa.Column('email_id', sa.String(length=255), nullable=True), + sa.Column('region_id', sa.Integer(), nullable=False), + sa.Column('approved', sa.Boolean(), nullable=True), + sa.Column('created_date', sa.Date(), nullable=False), + sa.ForeignKeyConstraint(['region_id'], ['regions.id'], ) + ) + + +def downgrade() -> None: + op.drop_table('tbl_usecases') diff --git a/src/api/alembic/versions/56b09e64cd25_create_parameters_table.py b/src/api/alembic/versions/56b09e64cd25_create_parameters_table.py new file mode 100644 index 00000000..d5302274 --- /dev/null +++ b/src/api/alembic/versions/56b09e64cd25_create_parameters_table.py @@ -0,0 +1,30 @@ +"""create parameters table + +Revision ID: 56b09e64cd25 +Revises: 28da5d5be2ad +Create Date: 2023-04-12 03:08:46.450280 + +""" +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = '56b09e64cd25' +down_revision = '28da5d5be2ad' +branch_labels = None +depends_on = None + + +def upgrade() -> None: + op.create_table( + 'parameters', + sa.Column('id', sa.Integer(), nullable=False), + sa.Column('available_date', sa.Date(), nullable=True), + sa.Column('layer_id', sa.Integer(), nullable=False), + sa.ForeignKeyConstraint(['layer_id'], ['layers.id'], ), + sa.PrimaryKeyConstraint('id') + ) + +def downgrade() -> None: + op.drop_table('parameters') diff --git a/src/api/alembic/versions/56de15d98076_create_market_yard_table.py b/src/api/alembic/versions/56de15d98076_create_market_yard_table.py deleted file mode 100644 index c9a73645..00000000 --- a/src/api/alembic/versions/56de15d98076_create_market_yard_table.py +++ /dev/null @@ -1,32 +0,0 @@ -"""create market_yard_table - -Revision ID: 56de15d98076 -Revises: fe1f33dae5d1 -Create Date: 2022-03-21 11:22:41.172492 - -""" -from alembic import op -import sqlalchemy as sa - - -# revision identifiers, used by Alembic. -revision = '56de15d98076' -down_revision = 'fe1f33dae5d1' -branch_labels = None -depends_on = None - - -def upgrade(): - op.create_table( - 'tbl_market_yard', - sa.Column('id',sa.Integer,primary_key=True), - sa.Column('district',sa.Text), - sa.Column('capacity',sa.Text), - sa.Column('name',sa.Text), - sa.Column('latitude',sa.Text), - sa.Column('longitude',sa.Text) - ) - - -def downgrade(): - op.drop_table('tbl_market_yard') diff --git a/src/api/alembic/versions/583c79074d1f_create_downloadables_table.py b/src/api/alembic/versions/583c79074d1f_create_downloadables_table.py deleted file mode 100644 index 1cb56074..00000000 --- a/src/api/alembic/versions/583c79074d1f_create_downloadables_table.py +++ /dev/null @@ -1,29 +0,0 @@ -"""create downloadables table - -Revision ID: 583c79074d1f -Revises: 817f06a069ae -Create Date: 2022-04-04 18:18:03.735338 - -""" -from alembic import op -import sqlalchemy as sa - - -# revision identifiers, used by Alembic. -revision = '583c79074d1f' -down_revision = '817f06a069ae' -branch_labels = None -depends_on = None - - -def upgrade(): - op.create_table( - 'tbl_downloadfiles', - sa.Column('id',sa.Integer,primary_key=True), - sa.Column('parameter',sa.String(255)), - sa.Column('filename_on_blob',sa.String(255)) - ) - - -def downgrade(): - op.drop_table('tbl_downloadfiles') diff --git a/src/api/alembic/versions/5dc24c7056e5_add_a_column_in_tbl_layers.py b/src/api/alembic/versions/5dc24c7056e5_add_a_column_in_tbl_layers.py deleted file mode 100644 index e4f37f30..00000000 --- a/src/api/alembic/versions/5dc24c7056e5_add_a_column_in_tbl_layers.py +++ /dev/null @@ -1,24 +0,0 @@ -"""Add a column in tbl_layers - -Revision ID: 5dc24c7056e5 -Revises: 6ae0bc32ba1c -Create Date: 2021-12-30 12:58:00.775568 - -""" -from alembic import op -import sqlalchemy as sa - - -# revision identifiers, used by Alembic. -revision = '5dc24c7056e5' -down_revision = '6ae0bc32ba1c' -branch_labels = None -depends_on = None - - -def upgrade(): - op.add_column('tbl_layers', sa.Column('display_name',sa.String(255))) - - -def downgrade(): - op.drop_column('tbl_layers', 'display_name') diff --git a/src/api/alembic/versions/65cef9815eb2_add_category_column_in_layer_table.py b/src/api/alembic/versions/65cef9815eb2_add_category_column_in_layer_table.py deleted file mode 100644 index 12db1605..00000000 --- a/src/api/alembic/versions/65cef9815eb2_add_category_column_in_layer_table.py +++ /dev/null @@ -1,23 +0,0 @@ -"""Add category column in layer table - -Revision ID: 65cef9815eb2 -Revises: 5dc24c7056e5 -Create Date: 2022-01-10 12:23:51.500215 - -""" -from alembic import op -import sqlalchemy as sa - - -# revision identifiers, used by Alembic. -revision = '65cef9815eb2' -down_revision = '5dc24c7056e5' -branch_labels = None -depends_on = None - - -def upgrade(): - op.add_column('tbl_layers', sa.Column('category',sa.String(255))) - -def downgrade(): - op.drop_column('tbl_layers', 'category') diff --git a/src/api/alembic/versions/6ae0bc32ba1c_create_downloads_table.py b/src/api/alembic/versions/6ae0bc32ba1c_create_downloads_table.py deleted file mode 100644 index f1ddd643..00000000 --- a/src/api/alembic/versions/6ae0bc32ba1c_create_downloads_table.py +++ /dev/null @@ -1,35 +0,0 @@ -"""create downloads table - -Revision ID: 6ae0bc32ba1c -Revises: 14dedf473cc9 -Create Date: 2021-12-20 19:06:28.710731 - -""" -from alembic import op -import sqlalchemy as sa - - -# revision identifiers, used by Alembic. -revision = '6ae0bc32ba1c' -down_revision = '14dedf473cc9' -branch_labels = None -depends_on = None - - -def upgrade(): - op.create_table( - 'tbl_downloads', - sa.Column('id',sa.Integer,primary_key=True), - sa.Column('layername',sa.String(255)), - sa.Column('type',sa.String(255)), - sa.Column('parameterdate',sa.String(255)), - sa.Column('region',sa.String(255)), - sa.Column('name',sa.String(255)), - sa.Column('email',sa.String(255)), - sa.Column('usage_type',sa.String(255)), - sa.Column('purpose',sa.String(255)) - ) - - -def downgrade(): - op.drop_table('tbl_downloads') diff --git a/src/api/alembic/versions/817f06a069ae_create_download_files_table.py b/src/api/alembic/versions/817f06a069ae_create_download_files_table.py deleted file mode 100644 index 25462b30..00000000 --- a/src/api/alembic/versions/817f06a069ae_create_download_files_table.py +++ /dev/null @@ -1,24 +0,0 @@ -"""create download files table - -Revision ID: 817f06a069ae -Revises: fbae44b0f29a -Create Date: 2022-04-04 17:46:19.424660 - -""" -from alembic import op -import sqlalchemy as sa - - -# revision identifiers, used by Alembic. -revision = '817f06a069ae' -down_revision = 'fbae44b0f29a' -branch_labels = None -depends_on = None - - -def upgrade(): - pass - - -def downgrade(): - pass diff --git a/src/api/alembic/versions/8c77cd97a4d3_create_downloadables_table.py b/src/api/alembic/versions/8c77cd97a4d3_create_downloadables_table.py new file mode 100644 index 00000000..10a8d0ea --- /dev/null +++ b/src/api/alembic/versions/8c77cd97a4d3_create_downloadables_table.py @@ -0,0 +1,31 @@ +"""Create downloadables table + +Revision ID: 8c77cd97a4d3 +Revises: 3d060e8d529d +Create Date: 2023-07-02 02:54:38.749246 + +""" +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = '8c77cd97a4d3' +down_revision = '3d060e8d529d' +branch_labels = None +depends_on = None + + +def upgrade() -> None: + op.create_table( + 'tbl_downloadables', + sa.Column('id', sa.Integer(), nullable=False), + sa.Column('layer_id', sa.Integer(), nullable=False), + sa.Column('filename_on_blob', sa.String(length=255)), + sa.ForeignKeyConstraint(['layer_id'], ['layers.id'], ), + sa.PrimaryKeyConstraint('id') + ) + + +def downgrade() -> None: + op.drop_table('tbl_downloadables') diff --git a/src/api/alembic/versions/95525cd23d81_create_usecase_table.py b/src/api/alembic/versions/95525cd23d81_create_usecase_table.py new file mode 100644 index 00000000..8997c231 --- /dev/null +++ b/src/api/alembic/versions/95525cd23d81_create_usecase_table.py @@ -0,0 +1,38 @@ +"""Create usecase table + +Revision ID: 95525cd23d81 +Revises: 56b09e64cd25 +Create Date: 2023-05-01 15:06:23.314534 + +""" +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = '95525cd23d81' +down_revision = '56b09e64cd25' +branch_labels = None +depends_on = None + + +def upgrade() -> None: + op.create_table( + 'usecases', + sa.Column('id', sa.Integer(), nullable=False, primary_key=True), + sa.Column('project_name', sa.String(length=255), nullable=True), + sa.Column('project_type', sa.String(length=255), nullable=True), + sa.Column('short_description', sa.Text(), nullable=True), + sa.Column('long_description', sa.Text(), nullable=True), + sa.Column('url', sa.String(length=255), nullable=True), + sa.Column('image', sa.String(length=255), nullable=True), + sa.Column('username', sa.String(length=255), nullable=True), + sa.Column('email_id', sa.String(length=255), nullable=True), + sa.Column('region_id', sa.Integer(), nullable=False), + sa.Column('approved', sa.Boolean(), nullable=True), + sa.ForeignKeyConstraint(['region_id'], ['regions.id'], ) + ) + + +def downgrade() -> None: + op.drop_table('usecases') diff --git a/src/api/alembic/versions/976e4e92566d_create_usecase_table.py b/src/api/alembic/versions/976e4e92566d_create_usecase_table.py deleted file mode 100644 index 34f85318..00000000 --- a/src/api/alembic/versions/976e4e92566d_create_usecase_table.py +++ /dev/null @@ -1,36 +0,0 @@ -"""create usecase table - -Revision ID: 976e4e92566d -Revises: -Create Date: 2021-12-17 11:52:38.250416 - -""" -from alembic import op -import sqlalchemy as sa - - -# revision identifiers, used by Alembic. -revision = '976e4e92566d' -down_revision = None -branch_labels = None -depends_on = None - - -def upgrade(): - op.create_table( - 'tbl_usecases', - sa.Column('id',sa.Integer,primary_key=True), - sa.Column('project_name',sa.String(255)), - sa.Column('project_type',sa.String(255)), - sa.Column('short_description',sa.String(255)), - sa.Column('long_description',sa.Text), - sa.Column('url',sa.String(255)), - sa.Column('image',sa.String(255)), - sa.Column('username',sa.String(255)), - sa.Column('email_id',sa.String(255)), - sa.Column('approved',sa.Boolean), - ) - - -def downgrade(): - op.drop_table('tbl_usecases') diff --git a/src/api/alembic/versions/c7b5a8e6faae_add_citation_column_in_layer_table.py b/src/api/alembic/versions/c7b5a8e6faae_add_citation_column_in_layer_table.py deleted file mode 100644 index 8283f022..00000000 --- a/src/api/alembic/versions/c7b5a8e6faae_add_citation_column_in_layer_table.py +++ /dev/null @@ -1,26 +0,0 @@ -"""Add citation column in layer table - -Revision ID: c7b5a8e6faae -Revises: 246d59b983ad -Create Date: 2022-03-28 10:46:13.506394 - -""" -from alembic import op -import sqlalchemy as sa - - -# revision identifiers, used by Alembic. -revision = 'c7b5a8e6faae' -down_revision = '246d59b983ad' -branch_labels = None -depends_on = None - - -def upgrade(): - op.add_column('tbl_layers', sa.Column('citation',sa.Text)) - - - -def downgrade(): - op.drop_column('tbl_layers', 'citation') - diff --git a/src/api/alembic/versions/ca7a696640d4_add_timerangefilter_coloumn.py b/src/api/alembic/versions/ca7a696640d4_add_timerangefilter_coloumn.py deleted file mode 100644 index 8a056842..00000000 --- a/src/api/alembic/versions/ca7a696640d4_add_timerangefilter_coloumn.py +++ /dev/null @@ -1,24 +0,0 @@ -"""Add timerangefilter coloumn - -Revision ID: ca7a696640d4 -Revises: 583c79074d1f -Create Date: 2022-04-05 13:01:23.418751 - -""" -from alembic import op -import sqlalchemy as sa - - -# revision identifiers, used by Alembic. -revision = 'ca7a696640d4' -down_revision = '583c79074d1f' -branch_labels = None -depends_on = None - - -def upgrade(): - op.add_column('tbl_layers', sa.Column('timerangefilter',sa.Boolean)) - - -def downgrade(): - op.drop_column('tbl_layers', 'timerangefilter') diff --git a/src/api/alembic/versions/dbf7ccb05c06_create_downloads_table.py b/src/api/alembic/versions/dbf7ccb05c06_create_downloads_table.py new file mode 100644 index 00000000..054df240 --- /dev/null +++ b/src/api/alembic/versions/dbf7ccb05c06_create_downloads_table.py @@ -0,0 +1,35 @@ +"""Create downloads table + +Revision ID: dbf7ccb05c06 +Revises: 8c77cd97a4d3 +Create Date: 2023-07-02 03:06:30.014636 + +""" +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = 'dbf7ccb05c06' +down_revision = '8c77cd97a4d3' +branch_labels = None +depends_on = None + + +def upgrade() -> None: + op.create_table( + 'tbl_downloads', + sa.Column('id', sa.Integer(), nullable=False), + sa.Column('layer_id', sa.Integer(), nullable=False), + sa.Column('name', sa.String(length=255)), + sa.Column('file_name', sa.String(length=255)), + sa.Column('email', sa.String(length=255)), + sa.Column('usage_type', sa.String(length=255)), + sa.Column('purpose', sa.String(length=255)), + sa.ForeignKeyConstraint(['layer_id'], ['layers.id'], ), + sa.PrimaryKeyConstraint('id') + ) + + +def downgrade() -> None: + op.drop_table('tbl_downloads') diff --git a/src/api/alembic/versions/de1f9ec54d2d_add_showcustom_column_in_layerconfig.py b/src/api/alembic/versions/de1f9ec54d2d_add_showcustom_column_in_layerconfig.py deleted file mode 100644 index db5b5579..00000000 --- a/src/api/alembic/versions/de1f9ec54d2d_add_showcustom_column_in_layerconfig.py +++ /dev/null @@ -1,24 +0,0 @@ -"""Add showcustom column in layerconfig - -Revision ID: de1f9ec54d2d -Revises: ca7a696640d4 -Create Date: 2022-04-18 12:26:36.389944 - -""" -from alembic import op -import sqlalchemy as sa - - -# revision identifiers, used by Alembic. -revision = 'de1f9ec54d2d' -down_revision = 'ca7a696640d4' -branch_labels = None -depends_on = None - - -def upgrade(): - op.add_column('tbl_layers', sa.Column('showcustom',sa.Boolean)) - - -def downgrade(): - op.drop_column('tbl_layers', 'showcustom') diff --git a/src/api/alembic/versions/e3c33d243285_update_usecase.py b/src/api/alembic/versions/e3c33d243285_update_usecase.py new file mode 100644 index 00000000..eba09d7e --- /dev/null +++ b/src/api/alembic/versions/e3c33d243285_update_usecase.py @@ -0,0 +1,24 @@ +"""Update usecase + +Revision ID: e3c33d243285 +Revises: 95525cd23d81 +Create Date: 2023-05-01 18:31:33.034657 + +""" +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = 'e3c33d243285' +down_revision = '95525cd23d81' +branch_labels = None +depends_on = None + + +def upgrade() -> None: + op.add_column('usecases', sa.Column('created_date', sa.Date(), nullable=False)) + + +def downgrade() -> None: + op.drop_column('usecases', 'created_date') diff --git a/src/api/alembic/versions/fbae44b0f29a_add_standards_column_in_layer_table.py b/src/api/alembic/versions/fbae44b0f29a_add_standards_column_in_layer_table.py deleted file mode 100644 index 2a20f344..00000000 --- a/src/api/alembic/versions/fbae44b0f29a_add_standards_column_in_layer_table.py +++ /dev/null @@ -1,24 +0,0 @@ -"""Add standards column in layer table - -Revision ID: fbae44b0f29a -Revises: c7b5a8e6faae -Create Date: 2022-03-28 10:49:30.528738 - -""" -from alembic import op -import sqlalchemy as sa - - -# revision identifiers, used by Alembic. -revision = 'fbae44b0f29a' -down_revision = 'c7b5a8e6faae' -branch_labels = None -depends_on = None - - -def upgrade(): - op.add_column('tbl_layers', sa.Column('standards',sa.Text)) - - -def downgrade(): - op.drop_column('tbl_layers', 'standards') diff --git a/src/api/alembic/versions/fe1f33dae5d1_add_isavailable_coloumn_in_layer_table.py b/src/api/alembic/versions/fe1f33dae5d1_add_isavailable_coloumn_in_layer_table.py deleted file mode 100644 index 1459b212..00000000 --- a/src/api/alembic/versions/fe1f33dae5d1_add_isavailable_coloumn_in_layer_table.py +++ /dev/null @@ -1,24 +0,0 @@ -"""add isavailable coloumn in layer table - -Revision ID: fe1f33dae5d1 -Revises: 28e51bb9c878 -Create Date: 2022-03-10 10:27:36.371220 - -""" -from alembic import op -import sqlalchemy as sa - - -# revision identifiers, used by Alembic. -revision = 'fe1f33dae5d1' -down_revision = '28e51bb9c878' -branch_labels = None -depends_on = None - - -def upgrade(): - op.add_column('tbl_layers', sa.Column('isavailable',sa.Boolean)) - - -def downgrade(): - op.drop_column('tbl_layers', 'isavailable') diff --git a/src/api/app/assets/Cropfire.geojson b/src/api/app/assets/Cropfire.geojson new file mode 100644 index 00000000..22a24dad --- /dev/null +++ b/src/api/app/assets/Cropfire.geojson @@ -0,0 +1 @@ +{"type":"FeatureCollection","features":[{"type":"Feature","geometry":{"type":"Point","coordinates":[80.77139,17.94679]},"properties":{"brightness":314.39,"scan":2.73,"track":1.58,"acq_date":"2021-09-02","acq_time":833,"satellite":"Aqua","instrument":"MODIS","confidence":53,"version":"6.1NRT","bright_t31":292.4,"frp":23.48,"daynight":"D","latitude":17.94679,"longitude":80.77139}},{"type":"Feature","geometry":{"type":"Point","coordinates":[78.49217,17.19748]},"properties":{"brightness":312.4,"scan":1.14,"track":1.06,"acq_date":"2021-09-15","acq_time":801,"satellite":"Aqua","instrument":"MODIS","confidence":49,"version":"6.1NRT","bright_t31":294.22,"frp":6.5,"daynight":"D","latitude":17.19748,"longitude":78.49217}},{"type":"Feature","geometry":{"type":"Point","coordinates":[78.34419,18.22896]},"properties":{"brightness":312.6,"scan":1.13,"track":1.06,"acq_date":"2021-09-15","acq_time":801,"satellite":"Aqua","instrument":"MODIS","confidence":56,"version":"6.1NRT","bright_t31":294.99,"frp":6.62,"daynight":"D","latitude":18.22896,"longitude":78.34419}},{"type":"Feature","geometry":{"type":"Point","coordinates":[80.79417,18.05874]},"properties":{"brightness":311.68,"scan":3.9,"track":1.84,"acq_date":"2021-09-21","acq_time":553,"satellite":"Terra","instrument":"MODIS","confidence":0,"version":"6.1NRT","bright_t31":286.88,"frp":47.67,"daynight":"D","latitude":18.05874,"longitude":80.79417}},{"type":"Feature","geometry":{"type":"Point","coordinates":[80.77779,18.07093]},"properties":{"brightness":309.87,"scan":3.34,"track":1.72,"acq_date":"2021-09-21","acq_time":724,"satellite":"Aqua","instrument":"MODIS","confidence":36,"version":"6.1NRT","bright_t31":285.67,"frp":26.48,"daynight":"D","latitude":18.07093,"longitude":80.77779}},{"type":"Feature","geometry":{"type":"Point","coordinates":[79.87051,18.44088]},"properties":{"brightness":314.9,"scan":1.12,"track":1.06,"acq_date":"2021-09-24","acq_time":756,"satellite":"Aqua","instrument":"MODIS","confidence":62,"version":"6.1NRT","bright_t31":294.18,"frp":7.91,"daynight":"D","latitude":18.44088,"longitude":79.87051}},{"type":"Feature","geometry":{"type":"Point","coordinates":[80.40132,18.54777]},"properties":{"brightness":316.19,"scan":1.07,"track":1.03,"acq_date":"2021-09-24","acq_time":756,"satellite":"Aqua","instrument":"MODIS","confidence":45,"version":"6.1NRT","bright_t31":299.29,"frp":8.91,"daynight":"D","latitude":18.54777,"longitude":80.40132}},{"type":"Feature","geometry":{"type":"Point","coordinates":[79.71806,18.55558]},"properties":{"brightness":320.12,"scan":1.02,"track":1.01,"acq_date":"2021-10-01","acq_time":801,"satellite":"Aqua","instrument":"MODIS","confidence":56,"version":"6.1NRT","bright_t31":300.79,"frp":9.57,"daynight":"D","latitude":18.55558,"longitude":79.71806}},{"type":"Feature","geometry":{"type":"Point","coordinates":[78.20298,18.88786]},"properties":{"brightness":319.72,"scan":1.12,"track":1.06,"acq_date":"2021-10-01","acq_time":801,"satellite":"Aqua","instrument":"MODIS","confidence":71,"version":"6.1NRT","bright_t31":297.51,"frp":10.34,"daynight":"D","latitude":18.88786,"longitude":78.20298}},{"type":"Feature","geometry":{"type":"Point","coordinates":[78.45592,18.03333]},"properties":{"brightness":318,"scan":1.12,"track":1.05,"acq_date":"2021-10-01","acq_time":801,"satellite":"Aqua","instrument":"MODIS","confidence":69,"version":"6.1NRT","bright_t31":295.9,"frp":10.74,"daynight":"D","latitude":18.03333,"longitude":78.45592}},{"type":"Feature","geometry":{"type":"Point","coordinates":[80.17703,17.34985]},"properties":{"brightness":313.14,"scan":1.64,"track":1.26,"acq_date":"2021-10-02","acq_time":533,"satellite":"Terra","instrument":"MODIS","confidence":42,"version":"6.1NRT","bright_t31":294.74,"frp":14.92,"daynight":"D","latitude":17.34985,"longitude":80.17703}},{"type":"Feature","geometry":{"type":"Point","coordinates":[80.798,18.0486]},"properties":{"brightness":312.75,"scan":4.71,"track":1.99,"acq_date":"2021-10-02","acq_time":845,"satellite":"Aqua","instrument":"MODIS","confidence":60,"version":"6.1NRT","bright_t31":290.53,"frp":61.61,"daynight":"D","latitude":18.0486,"longitude":80.798}},{"type":"Feature","geometry":{"type":"Point","coordinates":[80.8062,18.0482]},"properties":{"brightness":312.11,"scan":4.71,"track":1.99,"acq_date":"2021-10-02","acq_time":845,"satellite":"Aqua","instrument":"MODIS","confidence":36,"version":"6.1NRT","bright_t31":290.44,"frp":57.58,"daynight":"D","latitude":18.0482,"longitude":80.8062}},{"type":"Feature","geometry":{"type":"Point","coordinates":[80.81986,18.05204]},"properties":{"brightness":313.47,"scan":3.05,"track":1.66,"acq_date":"2021-10-03","acq_time":438,"satellite":"Terra","instrument":"MODIS","confidence":56,"version":"6.1NRT","bright_t31":290.74,"frp":31.39,"daynight":"D","latitude":18.05204,"longitude":80.81986}},{"type":"Feature","geometry":{"type":"Point","coordinates":[79.38727,18.43059]},"properties":{"brightness":314.2,"scan":1.02,"track":1.01,"acq_date":"2021-10-04","acq_time":521,"satellite":"Terra","instrument":"MODIS","confidence":62,"version":"6.1NRT","bright_t31":293.01,"frp":7.04,"daynight":"D","latitude":18.43059,"longitude":79.38727}},{"type":"Feature","geometry":{"type":"Point","coordinates":[79.30468,18.48005]},"properties":{"brightness":317.47,"scan":1.01,"track":1.01,"acq_date":"2021-10-04","acq_time":521,"satellite":"Terra","instrument":"MODIS","confidence":61,"version":"6.1NRT","bright_t31":297.78,"frp":9.17,"daynight":"D","latitude":18.48005,"longitude":79.30468}},{"type":"Feature","geometry":{"type":"Point","coordinates":[80.78557,18.07459]},"properties":{"brightness":318.64,"scan":1.13,"track":1.06,"acq_date":"2021-10-04","acq_time":521,"satellite":"Terra","instrument":"MODIS","confidence":26,"version":"6.1NRT","bright_t31":297.44,"frp":9.36,"daynight":"D","latitude":18.07459,"longitude":80.78557}},{"type":"Feature","geometry":{"type":"Point","coordinates":[79.82483,18.65028]},"properties":{"brightness":314.95,"scan":1.04,"track":1.02,"acq_date":"2021-10-04","acq_time":521,"satellite":"Terra","instrument":"MODIS","confidence":61,"version":"6.1NRT","bright_t31":297.11,"frp":6.38,"daynight":"D","latitude":18.65028,"longitude":79.82483}},{"type":"Feature","geometry":{"type":"Point","coordinates":[80.39365,18.54402]},"properties":{"brightness":311.96,"scan":1.08,"track":1.04,"acq_date":"2021-10-04","acq_time":521,"satellite":"Terra","instrument":"MODIS","confidence":0,"version":"6.1NRT","bright_t31":290.76,"frp":4.69,"daynight":"D","latitude":18.54402,"longitude":80.39365}},{"type":"Feature","geometry":{"type":"Point","coordinates":[80.78594,17.94751]},"properties":{"brightness":315.5,"scan":1.96,"track":1.37,"acq_date":"2021-10-05","acq_time":737,"satellite":"Aqua","instrument":"MODIS","confidence":39,"version":"6.1NRT","bright_t31":294.61,"frp":16.25,"daynight":"D","latitude":17.94751,"longitude":80.78594}},{"type":"Feature","geometry":{"type":"Point","coordinates":[80.81561,18.04566]},"properties":{"brightness":315.3,"scan":1.95,"track":1.36,"acq_date":"2021-10-05","acq_time":737,"satellite":"Aqua","instrument":"MODIS","confidence":28,"version":"6.1NRT","bright_t31":294.12,"frp":19.5,"daynight":"D","latitude":18.04566,"longitude":80.81561}},{"type":"Feature","geometry":{"type":"Point","coordinates":[80.39461,18.54405]},"properties":{"brightness":318.21,"scan":1.04,"track":1.02,"acq_date":"2021-10-06","acq_time":510,"satellite":"Terra","instrument":"MODIS","confidence":0,"version":"6.1NRT","bright_t31":300.65,"frp":7.38,"daynight":"D","latitude":18.54405,"longitude":80.39461}},{"type":"Feature","geometry":{"type":"Point","coordinates":[80.55976,18.2779]},"properties":{"brightness":313.25,"scan":3.71,"track":1.8,"acq_date":"2021-10-07","acq_time":553,"satellite":"Terra","instrument":"MODIS","confidence":29,"version":"6.1NRT","bright_t31":291.93,"frp":37.02,"daynight":"D","latitude":18.2779,"longitude":80.55976}},{"type":"Feature","geometry":{"type":"Point","coordinates":[80.79186,18.06352]},"properties":{"brightness":310.44,"scan":3.9,"track":1.84,"acq_date":"2021-10-07","acq_time":553,"satellite":"Terra","instrument":"MODIS","confidence":42,"version":"6.1NRT","bright_t31":290.97,"frp":32.24,"daynight":"D","latitude":18.06352,"longitude":80.79186}},{"type":"Feature","geometry":{"type":"Point","coordinates":[78.06661,16.57513]},"properties":{"brightness":318.51,"scan":1.05,"track":1.02,"acq_date":"2021-10-08","acq_time":809,"satellite":"Aqua","instrument":"MODIS","confidence":62,"version":"6.1NRT","bright_t31":297.82,"frp":7.61,"daynight":"D","latitude":16.57513,"longitude":78.06661}},{"type":"Feature","geometry":{"type":"Point","coordinates":[77.81274,18.69442]},"properties":{"brightness":314.38,"scan":1.03,"track":1.01,"acq_date":"2021-10-08","acq_time":809,"satellite":"Aqua","instrument":"MODIS","confidence":39,"version":"6.1NRT","bright_t31":297.57,"frp":4.95,"daynight":"D","latitude":18.69442,"longitude":77.81274}},{"type":"Feature","geometry":{"type":"Point","coordinates":[79.72411,18.55998]},"properties":{"brightness":315.32,"scan":1.86,"track":1.33,"acq_date":"2021-10-09","acq_time":540,"satellite":"Terra","instrument":"MODIS","confidence":26,"version":"6.1NRT","bright_t31":295.59,"frp":14.85,"daynight":"D","latitude":18.55998,"longitude":79.72411}},{"type":"Feature","geometry":{"type":"Point","coordinates":[79.30856,18.47549]},"properties":{"brightness":318.29,"scan":1.19,"track":1.09,"acq_date":"2021-10-10","acq_time":756,"satellite":"Aqua","instrument":"MODIS","confidence":54,"version":"6.1NRT","bright_t31":301.33,"frp":11.33,"daynight":"D","latitude":18.47549,"longitude":79.30856}},{"type":"Feature","geometry":{"type":"Point","coordinates":[80.39262,18.54012]},"properties":{"brightness":318.98,"scan":1.07,"track":1.03,"acq_date":"2021-10-10","acq_time":756,"satellite":"Aqua","instrument":"MODIS","confidence":0,"version":"6.1NRT","bright_t31":302.92,"frp":8.85,"daynight":"D","latitude":18.54012,"longitude":80.39262}},{"type":"Feature","geometry":{"type":"Point","coordinates":[79.42919,18.96517]},"properties":{"brightness":316.3,"scan":1.16,"track":1.07,"acq_date":"2021-10-10","acq_time":756,"satellite":"Aqua","instrument":"MODIS","confidence":65,"version":"6.1NRT","bright_t31":298.7,"frp":9.41,"daynight":"D","latitude":18.96517,"longitude":79.42919}},{"type":"Feature","geometry":{"type":"Point","coordinates":[78.38773,18.80067]},"properties":{"brightness":318.25,"scan":1.33,"track":1.14,"acq_date":"2021-10-10","acq_time":756,"satellite":"Aqua","instrument":"MODIS","confidence":61,"version":"6.1NRT","bright_t31":300.75,"frp":9.65,"daynight":"D","latitude":18.80067,"longitude":78.38773}},{"type":"Feature","geometry":{"type":"Point","coordinates":[80.78522,18.07341]},"properties":{"brightness":320.09,"scan":1.05,"track":1.02,"acq_date":"2021-10-10","acq_time":756,"satellite":"Aqua","instrument":"MODIS","confidence":60,"version":"6.1NRT","bright_t31":304.62,"frp":10.53,"daynight":"D","latitude":18.07341,"longitude":80.78522}},{"type":"Feature","geometry":{"type":"Point","coordinates":[77.91241,17.63158]},"properties":{"brightness":315.12,"scan":1.03,"track":1.01,"acq_date":"2021-10-11","acq_time":529,"satellite":"Terra","instrument":"MODIS","confidence":61,"version":"6.1NRT","bright_t31":300.43,"frp":7.05,"daynight":"D","latitude":17.63158,"longitude":77.91241}},{"type":"Feature","geometry":{"type":"Point","coordinates":[79.81081,17.08117]},"properties":{"brightness":316.5,"scan":1.24,"track":1.11,"acq_date":"2021-10-11","acq_time":529,"satellite":"Terra","instrument":"MODIS","confidence":67,"version":"6.1NRT","bright_t31":300.55,"frp":10.45,"daynight":"D","latitude":17.08117,"longitude":79.81081}},{"type":"Feature","geometry":{"type":"Point","coordinates":[77.90465,16.52595]},"properties":{"brightness":313.21,"scan":1.04,"track":1.02,"acq_date":"2021-10-11","acq_time":529,"satellite":"Terra","instrument":"MODIS","confidence":58,"version":"6.1NRT","bright_t31":296.52,"frp":5.89,"daynight":"D","latitude":16.52595,"longitude":77.90465}},{"type":"Feature","geometry":{"type":"Point","coordinates":[78.51683,17.57513]},"properties":{"brightness":313.32,"scan":1.07,"track":1.03,"acq_date":"2021-10-11","acq_time":529,"satellite":"Terra","instrument":"MODIS","confidence":37,"version":"6.1NRT","bright_t31":298.97,"frp":4.72,"daynight":"D","latitude":17.57513,"longitude":78.51683}},{"type":"Feature","geometry":{"type":"Point","coordinates":[78.06927,16.41804]},"properties":{"brightness":313.37,"scan":1.06,"track":1.03,"acq_date":"2021-10-11","acq_time":529,"satellite":"Terra","instrument":"MODIS","confidence":60,"version":"6.1NRT","bright_t31":294.29,"frp":6.81,"daynight":"D","latitude":16.41804,"longitude":78.06927}},{"type":"Feature","geometry":{"type":"Point","coordinates":[80.4698,18.39495]},"properties":{"brightness":314.38,"scan":1.57,"track":1.24,"acq_date":"2021-10-12","acq_time":744,"satellite":"Aqua","instrument":"MODIS","confidence":52,"version":"6.1NRT","bright_t31":295.33,"frp":11.64,"daynight":"D","latitude":18.39495,"longitude":80.4698}},{"type":"Feature","geometry":{"type":"Point","coordinates":[78.24435,19.1848]},"properties":{"brightness":317.12,"scan":1.11,"track":1.05,"acq_date":"2021-10-13","acq_time":514,"satellite":"Terra","instrument":"MODIS","confidence":62,"version":"6.1NRT","bright_t31":302.09,"frp":7.95,"daynight":"D","latitude":19.1848,"longitude":78.24435}},{"type":"Feature","geometry":{"type":"Point","coordinates":[80.2209,18.70275]},"properties":{"brightness":320.71,"scan":1,"track":1,"acq_date":"2021-10-13","acq_time":514,"satellite":"Terra","instrument":"MODIS","confidence":0,"version":"6.1NRT","bright_t31":304.44,"frp":8.81,"daynight":"D","latitude":18.70275,"longitude":80.2209}},{"type":"Feature","geometry":{"type":"Point","coordinates":[79.40317,18.42516]},"properties":{"brightness":316.4,"scan":1.01,"track":1.01,"acq_date":"2021-10-13","acq_time":514,"satellite":"Terra","instrument":"MODIS","confidence":46,"version":"6.1NRT","bright_t31":299.68,"frp":7.69,"daynight":"D","latitude":18.42516,"longitude":79.40317}},{"type":"Feature","geometry":{"type":"Point","coordinates":[80.40049,18.5476]},"properties":{"brightness":320.05,"scan":1,"track":1,"acq_date":"2021-10-13","acq_time":514,"satellite":"Terra","instrument":"MODIS","confidence":18,"version":"6.1NRT","bright_t31":302.22,"frp":7.3,"daynight":"D","latitude":18.5476,"longitude":80.40049}},{"type":"Feature","geometry":{"type":"Point","coordinates":[80.45518,18.42826]},"properties":{"brightness":316.29,"scan":1,"track":1,"acq_date":"2021-10-13","acq_time":514,"satellite":"Terra","instrument":"MODIS","confidence":0,"version":"6.1NRT","bright_t31":301.34,"frp":7.98,"daynight":"D","latitude":18.42826,"longitude":80.45518}},{"type":"Feature","geometry":{"type":"Point","coordinates":[78.86971,17.9853]},"properties":{"brightness":312.9,"scan":1.04,"track":1.02,"acq_date":"2021-10-13","acq_time":516,"satellite":"Terra","instrument":"MODIS","confidence":51,"version":"6.1NRT","bright_t31":296.62,"frp":5.4,"daynight":"D","latitude":17.9853,"longitude":78.86971}},{"type":"Feature","geometry":{"type":"Point","coordinates":[77.91027,17.6322]},"properties":{"brightness":311.21,"scan":1.17,"track":1.08,"acq_date":"2021-10-18","acq_time":533,"satellite":"Terra","instrument":"MODIS","confidence":43,"version":"6.1NRT","bright_t31":297.65,"frp":5.38,"daynight":"D","latitude":17.6322,"longitude":77.91027}},{"type":"Feature","geometry":{"type":"Point","coordinates":[79.72672,18.56706]},"properties":{"brightness":310.97,"scan":1.03,"track":1.01,"acq_date":"2021-10-20","acq_time":521,"satellite":"Terra","instrument":"MODIS","confidence":26,"version":"6.1NRT","bright_t31":293.26,"frp":5.28,"daynight":"D","latitude":18.56706,"longitude":79.72672}},{"type":"Feature","geometry":{"type":"Point","coordinates":[79.72522,18.55802]},"properties":{"brightness":311.9,"scan":1.03,"track":1.01,"acq_date":"2021-10-20","acq_time":521,"satellite":"Terra","instrument":"MODIS","confidence":12,"version":"6.1NRT","bright_t31":293.85,"frp":5.63,"daynight":"D","latitude":18.55802,"longitude":79.72522}},{"type":"Feature","geometry":{"type":"Point","coordinates":[80.22215,18.70315]},"properties":{"brightness":317.04,"scan":1.06,"track":1.03,"acq_date":"2021-10-20","acq_time":521,"satellite":"Terra","instrument":"MODIS","confidence":0,"version":"6.1NRT","bright_t31":300.05,"frp":8.79,"daynight":"D","latitude":18.70315,"longitude":80.22215}},{"type":"Feature","geometry":{"type":"Point","coordinates":[80.77716,18.07129]},"properties":{"brightness":317.02,"scan":1.96,"track":1.37,"acq_date":"2021-10-21","acq_time":737,"satellite":"Aqua","instrument":"MODIS","confidence":16,"version":"6.1NRT","bright_t31":298.19,"frp":18.26,"daynight":"D","latitude":18.07129,"longitude":80.77716}},{"type":"Feature","geometry":{"type":"Point","coordinates":[78.95562,18.07028]},"properties":{"brightness":315.14,"scan":1.18,"track":1.08,"acq_date":"2021-10-22","acq_time":508,"satellite":"Terra","instrument":"MODIS","confidence":61,"version":"6.1NRT","bright_t31":298.95,"frp":8.47,"daynight":"D","latitude":18.07028,"longitude":78.95562}},{"type":"Feature","geometry":{"type":"Point","coordinates":[80.72642,17.3217]},"properties":{"brightness":313.91,"scan":1.01,"track":1.01,"acq_date":"2021-10-22","acq_time":508,"satellite":"Terra","instrument":"MODIS","confidence":57,"version":"6.1NRT","bright_t31":295.99,"frp":6.25,"daynight":"D","latitude":17.3217,"longitude":80.72642}},{"type":"Feature","geometry":{"type":"Point","coordinates":[80.44908,18.34612]},"properties":{"brightness":313.34,"scan":3.62,"track":1.78,"acq_date":"2021-10-23","acq_time":553,"satellite":"Terra","instrument":"MODIS","confidence":36,"version":"6.1NRT","bright_t31":295.8,"frp":41.12,"daynight":"D","latitude":18.34612,"longitude":80.44908}},{"type":"Feature","geometry":{"type":"Point","coordinates":[80.4006,18.54083]},"properties":{"brightness":310.14,"scan":3.55,"track":1.77,"acq_date":"2021-10-23","acq_time":553,"satellite":"Terra","instrument":"MODIS","confidence":0,"version":"6.1NRT","bright_t31":294.16,"frp":32.77,"daynight":"D","latitude":18.54083,"longitude":80.4006}},{"type":"Feature","geometry":{"type":"Point","coordinates":[80.17272,18.69048]},"properties":{"brightness":312.94,"scan":3.6,"track":1.78,"acq_date":"2021-10-23","acq_time":724,"satellite":"Aqua","instrument":"MODIS","confidence":0,"version":"6.1NRT","bright_t31":296,"frp":40.14,"daynight":"D","latitude":18.69048,"longitude":80.17272}},{"type":"Feature","geometry":{"type":"Point","coordinates":[80.36163,18.51115]},"properties":{"brightness":312.65,"scan":3.51,"track":1.76,"acq_date":"2021-10-23","acq_time":724,"satellite":"Aqua","instrument":"MODIS","confidence":41,"version":"6.1NRT","bright_t31":295.73,"frp":35.2,"daynight":"D","latitude":18.51115,"longitude":80.36163}},{"type":"Feature","geometry":{"type":"Point","coordinates":[79.97215,16.79054]},"properties":{"brightness":319.86,"scan":1.16,"track":1.07,"acq_date":"2021-10-26","acq_time":754,"satellite":"Aqua","instrument":"MODIS","confidence":70,"version":"6.1NRT","bright_t31":299.58,"frp":11.6,"daynight":"D","latitude":16.79054,"longitude":79.97215}},{"type":"Feature","geometry":{"type":"Point","coordinates":[77.91071,18.57908]},"properties":{"brightness":323.09,"scan":1.44,"track":1.19,"acq_date":"2021-10-26","acq_time":756,"satellite":"Aqua","instrument":"MODIS","confidence":65,"version":"6.1NRT","bright_t31":303.14,"frp":21.29,"daynight":"D","latitude":18.57908,"longitude":77.91071}},{"type":"Feature","geometry":{"type":"Point","coordinates":[78.92433,17.42244]},"properties":{"brightness":313.56,"scan":1.3,"track":1.13,"acq_date":"2021-10-26","acq_time":756,"satellite":"Aqua","instrument":"MODIS","confidence":31,"version":"6.1NRT","bright_t31":300.63,"frp":5.73,"daynight":"D","latitude":17.42244,"longitude":78.92433}},{"type":"Feature","geometry":{"type":"Point","coordinates":[78.26846,18.27113]},"properties":{"brightness":320.14,"scan":1.04,"track":1.02,"acq_date":"2021-10-27","acq_time":527,"satellite":"Terra","instrument":"MODIS","confidence":50,"version":"6.1NRT","bright_t31":303.42,"frp":9.43,"daynight":"D","latitude":18.27113,"longitude":78.26846}},{"type":"Feature","geometry":{"type":"Point","coordinates":[79.22218,18.36398]},"properties":{"brightness":314.11,"scan":1.12,"track":1.05,"acq_date":"2021-10-27","acq_time":527,"satellite":"Terra","instrument":"MODIS","confidence":60,"version":"6.1NRT","bright_t31":302.12,"frp":6.22,"daynight":"D","latitude":18.36398,"longitude":79.22218}},{"type":"Feature","geometry":{"type":"Point","coordinates":[78.26993,18.2802]},"properties":{"brightness":320.71,"scan":1.04,"track":1.02,"acq_date":"2021-10-27","acq_time":527,"satellite":"Terra","instrument":"MODIS","confidence":70,"version":"6.1NRT","bright_t31":303.69,"frp":10.37,"daynight":"D","latitude":18.2802,"longitude":78.26993}},{"type":"Feature","geometry":{"type":"Point","coordinates":[78.26024,18.28169]},"properties":{"brightness":319.55,"scan":1.04,"track":1.02,"acq_date":"2021-10-27","acq_time":527,"satellite":"Terra","instrument":"MODIS","confidence":69,"version":"6.1NRT","bright_t31":303.69,"frp":9.21,"daynight":"D","latitude":18.28169,"longitude":78.26024}},{"type":"Feature","geometry":{"type":"Point","coordinates":[78.78162,18.02552]},"properties":{"brightness":317.58,"scan":1.08,"track":1.04,"acq_date":"2021-10-27","acq_time":527,"satellite":"Terra","instrument":"MODIS","confidence":67,"version":"6.1NRT","bright_t31":301.45,"frp":9.86,"daynight":"D","latitude":18.02552,"longitude":78.78162}},{"type":"Feature","geometry":{"type":"Point","coordinates":[78.3036,18.21993]},"properties":{"brightness":320.07,"scan":1.04,"track":1.02,"acq_date":"2021-10-27","acq_time":527,"satellite":"Terra","instrument":"MODIS","confidence":70,"version":"6.1NRT","bright_t31":302.03,"frp":11.81,"daynight":"D","latitude":18.21993,"longitude":78.3036}},{"type":"Feature","geometry":{"type":"Point","coordinates":[80.39825,18.54556]},"properties":{"brightness":318.16,"scan":1.28,"track":1.12,"acq_date":"2021-10-27","acq_time":527,"satellite":"Terra","instrument":"MODIS","confidence":0,"version":"6.1NRT","bright_t31":305.73,"frp":10.56,"daynight":"D","latitude":18.54556,"longitude":80.39825}},{"type":"Feature","geometry":{"type":"Point","coordinates":[78.28786,19.04352]},"properties":{"brightness":314.77,"scan":1.03,"track":1.01,"acq_date":"2021-10-27","acq_time":527,"satellite":"Terra","instrument":"MODIS","confidence":41,"version":"6.1NRT","bright_t31":301.43,"frp":5.71,"daynight":"D","latitude":19.04352,"longitude":78.28786}},{"type":"Feature","geometry":{"type":"Point","coordinates":[78.28936,19.05255]},"properties":{"brightness":316.02,"scan":1.03,"track":1.01,"acq_date":"2021-10-27","acq_time":527,"satellite":"Terra","instrument":"MODIS","confidence":53,"version":"6.1NRT","bright_t31":301.45,"frp":6.92,"daynight":"D","latitude":19.05255,"longitude":78.28936}},{"type":"Feature","geometry":{"type":"Point","coordinates":[78.79167,18.02394]},"properties":{"brightness":319.58,"scan":1.08,"track":1.04,"acq_date":"2021-10-27","acq_time":527,"satellite":"Terra","instrument":"MODIS","confidence":71,"version":"6.1NRT","bright_t31":301.23,"frp":12.3,"daynight":"D","latitude":18.02394,"longitude":78.79167}},{"type":"Feature","geometry":{"type":"Point","coordinates":[78.75962,19.40433]},"properties":{"brightness":315.11,"scan":1.05,"track":1.03,"acq_date":"2021-10-27","acq_time":527,"satellite":"Terra","instrument":"MODIS","confidence":63,"version":"6.1NRT","bright_t31":301.46,"frp":6.78,"daynight":"D","latitude":19.40433,"longitude":78.75962}},{"type":"Feature","geometry":{"type":"Point","coordinates":[78.29842,18.24865]},"properties":{"brightness":315.47,"scan":1.04,"track":1.02,"acq_date":"2021-10-27","acq_time":527,"satellite":"Terra","instrument":"MODIS","confidence":60,"version":"6.1NRT","bright_t31":302.19,"frp":6.25,"daynight":"D","latitude":18.24865,"longitude":78.29842}},{"type":"Feature","geometry":{"type":"Point","coordinates":[78.26889,17.6903]},"properties":{"brightness":316.44,"scan":1.05,"track":1.02,"acq_date":"2021-10-27","acq_time":527,"satellite":"Terra","instrument":"MODIS","confidence":62,"version":"6.1NRT","bright_t31":300.38,"frp":9.07,"daynight":"D","latitude":17.6903,"longitude":78.26889}},{"type":"Feature","geometry":{"type":"Point","coordinates":[78.27706,17.59684]},"properties":{"brightness":313.73,"scan":1.05,"track":1.02,"acq_date":"2021-10-27","acq_time":529,"satellite":"Terra","instrument":"MODIS","confidence":42,"version":"6.1NRT","bright_t31":302.6,"frp":5.64,"daynight":"D","latitude":17.59684,"longitude":78.27706}},{"type":"Feature","geometry":{"type":"Point","coordinates":[78.26733,17.59833]},"properties":{"brightness":321.13,"scan":1.05,"track":1.02,"acq_date":"2021-10-27","acq_time":529,"satellite":"Terra","instrument":"MODIS","confidence":72,"version":"6.1NRT","bright_t31":302.6,"frp":12.69,"daynight":"D","latitude":17.59833,"longitude":78.26733}},{"type":"Feature","geometry":{"type":"Point","coordinates":[78.15332,17.48615]},"properties":{"brightness":314.24,"scan":1.04,"track":1.02,"acq_date":"2021-10-27","acq_time":529,"satellite":"Terra","instrument":"MODIS","confidence":54,"version":"6.1NRT","bright_t31":301.09,"frp":6.43,"daynight":"D","latitude":17.48615,"longitude":78.15332}},{"type":"Feature","geometry":{"type":"Point","coordinates":[78.41153,17.24292]},"properties":{"brightness":312.51,"scan":1.07,"track":1.03,"acq_date":"2021-10-27","acq_time":529,"satellite":"Terra","instrument":"MODIS","confidence":26,"version":"6.1NRT","bright_t31":297.74,"frp":4.95,"daynight":"D","latitude":17.24292,"longitude":78.41153}},{"type":"Feature","geometry":{"type":"Point","coordinates":[78.40167,17.24446]},"properties":{"brightness":322.16,"scan":1.07,"track":1.03,"acq_date":"2021-10-27","acq_time":529,"satellite":"Terra","instrument":"MODIS","confidence":73,"version":"6.1NRT","bright_t31":298.74,"frp":14.73,"daynight":"D","latitude":17.24446,"longitude":78.40167}},{"type":"Feature","geometry":{"type":"Point","coordinates":[78.00985,15.90208]},"properties":{"brightness":322.67,"scan":1.06,"track":1.03,"acq_date":"2021-10-27","acq_time":529,"satellite":"Terra","instrument":"MODIS","confidence":73,"version":"6.1NRT","bright_t31":305.24,"frp":10.16,"daynight":"D","latitude":15.90208,"longitude":78.00985}},{"type":"Feature","geometry":{"type":"Point","coordinates":[78.00011,15.90359]},"properties":{"brightness":327.21,"scan":1.06,"track":1.03,"acq_date":"2021-10-27","acq_time":529,"satellite":"Terra","instrument":"MODIS","confidence":79,"version":"6.1NRT","bright_t31":305.12,"frp":16.08,"daynight":"D","latitude":15.90359,"longitude":78.00011}},{"type":"Feature","geometry":{"type":"Point","coordinates":[78.00953,16.44772]},"properties":{"brightness":316.97,"scan":1.05,"track":1.02,"acq_date":"2021-10-27","acq_time":529,"satellite":"Terra","instrument":"MODIS","confidence":61,"version":"6.1NRT","bright_t31":301.04,"frp":8.15,"daynight":"D","latitude":16.44772,"longitude":78.00953}},{"type":"Feature","geometry":{"type":"Point","coordinates":[77.99986,16.44919]},"properties":{"brightness":315.72,"scan":1.05,"track":1.02,"acq_date":"2021-10-27","acq_time":529,"satellite":"Terra","instrument":"MODIS","confidence":54,"version":"6.1NRT","bright_t31":301.35,"frp":6.74,"daynight":"D","latitude":16.44919,"longitude":77.99986}},{"type":"Feature","geometry":{"type":"Point","coordinates":[78.47068,16.62556]},"properties":{"brightness":317.41,"scan":1.09,"track":1.04,"acq_date":"2021-10-27","acq_time":529,"satellite":"Terra","instrument":"MODIS","confidence":54,"version":"6.1NRT","bright_t31":301.97,"frp":7.3,"daynight":"D","latitude":16.62556,"longitude":78.47068}},{"type":"Feature","geometry":{"type":"Point","coordinates":[78.46917,16.6163]},"properties":{"brightness":320.33,"scan":1.09,"track":1.04,"acq_date":"2021-10-27","acq_time":529,"satellite":"Terra","instrument":"MODIS","confidence":69,"version":"6.1NRT","bright_t31":301.76,"frp":10.52,"daynight":"D","latitude":16.6163,"longitude":78.46917}},{"type":"Feature","geometry":{"type":"Point","coordinates":[80.45496,18.45146]},"properties":{"brightness":318.04,"scan":1.57,"track":1.24,"acq_date":"2021-10-28","acq_time":744,"satellite":"Aqua","instrument":"MODIS","confidence":0,"version":"6.1NRT","bright_t31":303.1,"frp":16.53,"daynight":"D","latitude":18.45146,"longitude":80.45496}},{"type":"Feature","geometry":{"type":"Point","coordinates":[78.14998,16.35169]},"properties":{"brightness":313.18,"scan":1.06,"track":1.03,"acq_date":"2021-10-29","acq_time":516,"satellite":"Terra","instrument":"MODIS","confidence":54,"version":"6.1NRT","bright_t31":285.81,"frp":8.73,"daynight":"D","latitude":16.35169,"longitude":78.14998}},{"type":"Feature","geometry":{"type":"Point","coordinates":[80.20611,18.69577]},"properties":{"brightness":310.53,"scan":4.44,"track":1.94,"acq_date":"2021-10-30","acq_time":559,"satellite":"Terra","instrument":"MODIS","confidence":17,"version":"6.1NRT","bright_t31":291.14,"frp":41.47,"daynight":"D","latitude":18.69577,"longitude":80.20611}},{"type":"Feature","geometry":{"type":"Point","coordinates":[80.86298,17.97062]},"properties":{"brightness":316.64,"scan":1.13,"track":1.06,"acq_date":"2021-10-31","acq_time":504,"satellite":"Terra","instrument":"MODIS","confidence":20,"version":"6.1NRT","bright_t31":299.09,"frp":8.52,"daynight":"D","latitude":17.97062,"longitude":80.86298}},{"type":"Feature","geometry":{"type":"Point","coordinates":[79.10719,17.94626]},"properties":{"brightness":315.64,"scan":1.42,"track":1.18,"acq_date":"2021-10-31","acq_time":504,"satellite":"Terra","instrument":"MODIS","confidence":62,"version":"6.1NRT","bright_t31":298.91,"frp":11.66,"daynight":"D","latitude":17.94626,"longitude":79.10719}},{"type":"Feature","geometry":{"type":"Point","coordinates":[79.12048,17.94456]},"properties":{"brightness":314.77,"scan":1.42,"track":1.18,"acq_date":"2021-10-31","acq_time":504,"satellite":"Terra","instrument":"MODIS","confidence":60,"version":"6.1NRT","bright_t31":299.14,"frp":10.52,"daynight":"D","latitude":17.94456,"longitude":79.12048}},{"type":"Feature","geometry":{"type":"Point","coordinates":[77.94315,18.53237]},"properties":{"brightness":317.66,"scan":1.01,"track":1,"acq_date":"2021-10-31","acq_time":813,"satellite":"Aqua","instrument":"MODIS","confidence":34,"version":"6.1NRT","bright_t31":302.83,"frp":5.78,"daynight":"D","latitude":18.53237,"longitude":77.94315}},{"type":"Feature","geometry":{"type":"Point","coordinates":[77.89317,18.56305]},"properties":{"brightness":320.14,"scan":1.01,"track":1,"acq_date":"2021-10-31","acq_time":813,"satellite":"Aqua","instrument":"MODIS","confidence":49,"version":"6.1NRT","bright_t31":304.12,"frp":8.27,"daynight":"D","latitude":18.56305,"longitude":77.89317}},{"type":"Feature","geometry":{"type":"Point","coordinates":[78.4175,18.6079]},"properties":{"brightness":319.21,"scan":1.03,"track":1.01,"acq_date":"2021-10-31","acq_time":813,"satellite":"Aqua","instrument":"MODIS","confidence":54,"version":"6.1NRT","bright_t31":303.57,"frp":7.13,"daynight":"D","latitude":18.6079,"longitude":78.4175}},{"type":"Feature","geometry":{"type":"Point","coordinates":[78.42029,18.58981]},"properties":{"brightness":320.15,"scan":1.03,"track":1.01,"acq_date":"2021-10-31","acq_time":813,"satellite":"Aqua","instrument":"MODIS","confidence":62,"version":"6.1NRT","bright_t31":304.83,"frp":7.48,"daynight":"D","latitude":18.58981,"longitude":78.42029}},{"type":"Feature","geometry":{"type":"Point","coordinates":[78.09726,18.87611]},"properties":{"brightness":321.85,"scan":1.01,"track":1.01,"acq_date":"2021-10-31","acq_time":816,"satellite":"Aqua","instrument":"MODIS","confidence":70,"version":"6.1NRT","bright_t31":304.33,"frp":10.43,"daynight":"D","latitude":18.87611,"longitude":78.09726}},{"type":"Feature","geometry":{"type":"Point","coordinates":[77.9171,18.79107]},"properties":{"brightness":330.5,"scan":1.16,"track":1.07,"acq_date":"2021-11-02","acq_time":801,"satellite":"Aqua","instrument":"MODIS","confidence":83,"version":"6.1NRT","bright_t31":296.07,"frp":25.58,"daynight":"D","latitude":18.79107,"longitude":77.9171}},{"type":"Feature","geometry":{"type":"Point","coordinates":[77.90624,18.78937]},"properties":{"brightness":318.91,"scan":1.16,"track":1.07,"acq_date":"2021-11-02","acq_time":801,"satellite":"Aqua","instrument":"MODIS","confidence":37,"version":"6.1NRT","bright_t31":294.51,"frp":9.02,"daynight":"D","latitude":18.78937,"longitude":77.90624}},{"type":"Feature","geometry":{"type":"Point","coordinates":[78.2138,18.40567]},"properties":{"brightness":316.73,"scan":1.14,"track":1.06,"acq_date":"2021-11-02","acq_time":801,"satellite":"Aqua","instrument":"MODIS","confidence":30,"version":"6.1NRT","bright_t31":294.49,"frp":7.03,"daynight":"D","latitude":18.40567,"longitude":78.2138}},{"type":"Feature","geometry":{"type":"Point","coordinates":[78.00397,18.34379]},"properties":{"brightness":316.45,"scan":1.16,"track":1.07,"acq_date":"2021-11-02","acq_time":801,"satellite":"Aqua","instrument":"MODIS","confidence":64,"version":"6.1NRT","bright_t31":294.86,"frp":8.98,"daynight":"D","latitude":18.34379,"longitude":78.00397}},{"type":"Feature","geometry":{"type":"Point","coordinates":[78.21838,18.41071]},"properties":{"brightness":318.01,"scan":1.13,"track":1.06,"acq_date":"2021-11-02","acq_time":801,"satellite":"Aqua","instrument":"MODIS","confidence":69,"version":"6.1NRT","bright_t31":295.08,"frp":10.09,"daynight":"D","latitude":18.41071,"longitude":78.21838}},{"type":"Feature","geometry":{"type":"Point","coordinates":[77.99889,18.40525]},"properties":{"brightness":313.48,"scan":1.16,"track":1.07,"acq_date":"2021-11-02","acq_time":801,"satellite":"Aqua","instrument":"MODIS","confidence":52,"version":"6.1NRT","bright_t31":292.05,"frp":6.81,"daynight":"D","latitude":18.40525,"longitude":77.99889}},{"type":"Feature","geometry":{"type":"Point","coordinates":[77.87975,18.65404]},"properties":{"brightness":314.1,"scan":1.17,"track":1.08,"acq_date":"2021-11-02","acq_time":801,"satellite":"Aqua","instrument":"MODIS","confidence":59,"version":"6.1NRT","bright_t31":290.73,"frp":6.87,"daynight":"D","latitude":18.65404,"longitude":77.87975}},{"type":"Feature","geometry":{"type":"Point","coordinates":[77.8688,18.6523]},"properties":{"brightness":325.98,"scan":1.17,"track":1.08,"acq_date":"2021-11-02","acq_time":801,"satellite":"Aqua","instrument":"MODIS","confidence":79,"version":"6.1NRT","bright_t31":292.41,"frp":21.13,"daynight":"D","latitude":18.6523,"longitude":77.8688}},{"type":"Feature","geometry":{"type":"Point","coordinates":[77.80315,18.51661]},"properties":{"brightness":314.31,"scan":1.19,"track":1.08,"acq_date":"2021-11-02","acq_time":801,"satellite":"Aqua","instrument":"MODIS","confidence":58,"version":"6.1NRT","bright_t31":292.38,"frp":7.84,"daynight":"D","latitude":18.51661,"longitude":77.80315}},{"type":"Feature","geometry":{"type":"Point","coordinates":[78.14169,17.73856]},"properties":{"brightness":339.27,"scan":1.17,"track":1.07,"acq_date":"2021-11-02","acq_time":801,"satellite":"Aqua","instrument":"MODIS","confidence":90,"version":"6.1NRT","bright_t31":294.19,"frp":45.27,"daynight":"D","latitude":17.73856,"longitude":78.14169}},{"type":"Feature","geometry":{"type":"Point","coordinates":[78.20782,18.40904]},"properties":{"brightness":318.84,"scan":1.14,"track":1.06,"acq_date":"2021-11-02","acq_time":801,"satellite":"Aqua","instrument":"MODIS","confidence":71,"version":"6.1NRT","bright_t31":294.88,"frp":11.09,"daynight":"D","latitude":18.40904,"longitude":78.20782}},{"type":"Feature","geometry":{"type":"Point","coordinates":[78.13083,17.73688]},"properties":{"brightness":315.88,"scan":1.17,"track":1.08,"acq_date":"2021-11-02","acq_time":801,"satellite":"Aqua","instrument":"MODIS","confidence":68,"version":"6.1NRT","bright_t31":293.86,"frp":10.05,"daynight":"D","latitude":17.73688,"longitude":78.13083}},{"type":"Feature","geometry":{"type":"Point","coordinates":[78.27182,17.69036]},"properties":{"brightness":318.8,"scan":1.15,"track":1.07,"acq_date":"2021-11-02","acq_time":801,"satellite":"Aqua","instrument":"MODIS","confidence":73,"version":"6.1NRT","bright_t31":293.17,"frp":12.48,"daynight":"D","latitude":17.69036,"longitude":78.27182}},{"type":"Feature","geometry":{"type":"Point","coordinates":[77.91879,18.78152]},"properties":{"brightness":319.87,"scan":1.16,"track":1.07,"acq_date":"2021-11-02","acq_time":801,"satellite":"Aqua","instrument":"MODIS","confidence":57,"version":"6.1NRT","bright_t31":294.04,"frp":11.78,"daynight":"D","latitude":18.78152,"longitude":77.91879}},{"type":"Feature","geometry":{"type":"Point","coordinates":[77.96626,18.55566]},"properties":{"brightness":312.16,"scan":1.82,"track":1.32,"acq_date":"2021-11-04","acq_time":750,"satellite":"Aqua","instrument":"MODIS","confidence":43,"version":"6.1NRT","bright_t31":292.64,"frp":18.94,"daynight":"D","latitude":18.55566,"longitude":77.96626}},{"type":"Feature","geometry":{"type":"Point","coordinates":[80.44436,18.34689]},"properties":{"brightness":318.4,"scan":1.26,"track":1.11,"acq_date":"2021-11-04","acq_time":750,"satellite":"Aqua","instrument":"MODIS","confidence":20,"version":"6.1NRT","bright_t31":295.79,"frp":13.67,"daynight":"D","latitude":18.34689,"longitude":80.44436}},{"type":"Feature","geometry":{"type":"Point","coordinates":[80.45438,18.45333]},"properties":{"brightness":318.1,"scan":1.09,"track":1.04,"acq_date":"2021-11-05","acq_time":521,"satellite":"Terra","instrument":"MODIS","confidence":0,"version":"6.1NRT","bright_t31":302.84,"frp":11.95,"daynight":"D","latitude":18.45333,"longitude":80.45438}},{"type":"Feature","geometry":{"type":"Point","coordinates":[79.35579,18.27991]},"properties":{"brightness":316.51,"scan":1.02,"track":1.01,"acq_date":"2021-11-05","acq_time":521,"satellite":"Terra","instrument":"MODIS","confidence":45,"version":"6.1NRT","bright_t31":299.43,"frp":7.87,"daynight":"D","latitude":18.27991,"longitude":79.35579}},{"type":"Feature","geometry":{"type":"Point","coordinates":[77.90269,18.46103]},"properties":{"brightness":314.8,"scan":1.37,"track":1.16,"acq_date":"2021-11-07","acq_time":510,"satellite":"Terra","instrument":"MODIS","confidence":48,"version":"6.1NRT","bright_t31":300.42,"frp":9.02,"daynight":"D","latitude":18.46103,"longitude":77.90269}},{"type":"Feature","geometry":{"type":"Point","coordinates":[77.9156,18.45943]},"properties":{"brightness":315.11,"scan":1.37,"track":1.16,"acq_date":"2021-11-07","acq_time":510,"satellite":"Terra","instrument":"MODIS","confidence":35,"version":"6.1NRT","bright_t31":300,"frp":8.89,"daynight":"D","latitude":18.45943,"longitude":77.9156}},{"type":"Feature","geometry":{"type":"Point","coordinates":[78.33183,17.15433]},"properties":{"brightness":309.86,"scan":1.24,"track":1.11,"acq_date":"2021-11-07","acq_time":510,"satellite":"Terra","instrument":"MODIS","confidence":46,"version":"6.1NRT","bright_t31":287.93,"frp":7.16,"daynight":"D","latitude":17.15433,"longitude":78.33183}},{"type":"Feature","geometry":{"type":"Point","coordinates":[78.26662,18.09656]},"properties":{"brightness":316.42,"scan":1.14,"track":1.06,"acq_date":"2021-11-07","acq_time":820,"satellite":"Aqua","instrument":"MODIS","confidence":58,"version":"6.1NRT","bright_t31":301.53,"frp":7.49,"daynight":"D","latitude":18.09656,"longitude":78.26662}},{"type":"Feature","geometry":{"type":"Point","coordinates":[78.43762,18.6406]},"properties":{"brightness":318.12,"scan":1.17,"track":1.08,"acq_date":"2021-11-07","acq_time":822,"satellite":"Aqua","instrument":"MODIS","confidence":69,"version":"6.1NRT","bright_t31":296.93,"frp":10.43,"daynight":"D","latitude":18.6406,"longitude":78.43762}},{"type":"Feature","geometry":{"type":"Point","coordinates":[78.41006,18.59777]},"properties":{"brightness":316.13,"scan":1.17,"track":1.08,"acq_date":"2021-11-07","acq_time":822,"satellite":"Aqua","instrument":"MODIS","confidence":45,"version":"6.1NRT","bright_t31":290.95,"frp":10.14,"daynight":"D","latitude":18.59777,"longitude":78.41006}},{"type":"Feature","geometry":{"type":"Point","coordinates":[78.00724,18.79645]},"properties":{"brightness":317.05,"scan":1.12,"track":1.06,"acq_date":"2021-11-07","acq_time":822,"satellite":"Aqua","instrument":"MODIS","confidence":64,"version":"6.1NRT","bright_t31":302.4,"frp":7.71,"daynight":"D","latitude":18.79645,"longitude":78.00724}},{"type":"Feature","geometry":{"type":"Point","coordinates":[77.93565,18.7005]},"properties":{"brightness":325.1,"scan":1.11,"track":1.05,"acq_date":"2021-11-07","acq_time":822,"satellite":"Aqua","instrument":"MODIS","confidence":67,"version":"6.1NRT","bright_t31":303.88,"frp":17.03,"daynight":"D","latitude":18.7005,"longitude":77.93565}},{"type":"Feature","geometry":{"type":"Point","coordinates":[77.94186,18.69655]},"properties":{"brightness":318.99,"scan":1.11,"track":1.05,"acq_date":"2021-11-07","acq_time":822,"satellite":"Aqua","instrument":"MODIS","confidence":64,"version":"6.1NRT","bright_t31":303.42,"frp":8.5,"daynight":"D","latitude":18.69655,"longitude":77.94186}},{"type":"Feature","geometry":{"type":"Point","coordinates":[77.77538,18.60749]},"properties":{"brightness":322.76,"scan":1.1,"track":1.04,"acq_date":"2021-11-07","acq_time":822,"satellite":"Aqua","instrument":"MODIS","confidence":74,"version":"6.1NRT","bright_t31":299.55,"frp":13.88,"daynight":"D","latitude":18.60749,"longitude":77.77538}},{"type":"Feature","geometry":{"type":"Point","coordinates":[77.71963,18.53613]},"properties":{"brightness":318.04,"scan":1.09,"track":1.04,"acq_date":"2021-11-07","acq_time":822,"satellite":"Aqua","instrument":"MODIS","confidence":64,"version":"6.1NRT","bright_t31":295.15,"frp":9.42,"daynight":"D","latitude":18.53613,"longitude":77.71963}},{"type":"Feature","geometry":{"type":"Point","coordinates":[77.89378,18.45866]},"properties":{"brightness":312.13,"scan":1.1,"track":1.05,"acq_date":"2021-11-07","acq_time":822,"satellite":"Aqua","instrument":"MODIS","confidence":24,"version":"6.1NRT","bright_t31":290.17,"frp":7.48,"daynight":"D","latitude":18.45866,"longitude":77.89378}},{"type":"Feature","geometry":{"type":"Point","coordinates":[77.89516,18.44929]},"properties":{"brightness":311.92,"scan":1.1,"track":1.05,"acq_date":"2021-11-07","acq_time":822,"satellite":"Aqua","instrument":"MODIS","confidence":26,"version":"6.1NRT","bright_t31":288.54,"frp":7.51,"daynight":"D","latitude":18.44929,"longitude":77.89516}},{"type":"Feature","geometry":{"type":"Point","coordinates":[78.4593,18.67678]},"properties":{"brightness":316.68,"scan":1.18,"track":1.08,"acq_date":"2021-11-07","acq_time":822,"satellite":"Aqua","instrument":"MODIS","confidence":47,"version":"6.1NRT","bright_t31":302.24,"frp":6.88,"daynight":"D","latitude":18.67678,"longitude":78.4593}},{"type":"Feature","geometry":{"type":"Point","coordinates":[77.93325,18.58373]},"properties":{"brightness":331.89,"scan":1.11,"track":1.05,"acq_date":"2021-11-07","acq_time":822,"satellite":"Aqua","instrument":"MODIS","confidence":79,"version":"6.1NRT","bright_t31":300.09,"frp":27.46,"daynight":"D","latitude":18.58373,"longitude":77.93325}},{"type":"Feature","geometry":{"type":"Point","coordinates":[77.8682,18.59415]},"properties":{"brightness":317.04,"scan":1.1,"track":1.05,"acq_date":"2021-11-07","acq_time":822,"satellite":"Aqua","instrument":"MODIS","confidence":54,"version":"6.1NRT","bright_t31":297.4,"frp":9.03,"daynight":"D","latitude":18.59415,"longitude":77.8682}},{"type":"Feature","geometry":{"type":"Point","coordinates":[77.78567,18.60885]},"properties":{"brightness":335.21,"scan":1.1,"track":1.04,"acq_date":"2021-11-07","acq_time":822,"satellite":"Aqua","instrument":"MODIS","confidence":86,"version":"6.1NRT","bright_t31":298.89,"frp":32.3,"daynight":"D","latitude":18.60885,"longitude":77.78567}},{"type":"Feature","geometry":{"type":"Point","coordinates":[78.1531,18.62264]},"properties":{"brightness":326.26,"scan":1.14,"track":1.06,"acq_date":"2021-11-07","acq_time":822,"satellite":"Aqua","instrument":"MODIS","confidence":79,"version":"6.1NRT","bright_t31":298.54,"frp":19.85,"daynight":"D","latitude":18.62264,"longitude":78.1531}},{"type":"Feature","geometry":{"type":"Point","coordinates":[77.92284,18.58234]},"properties":{"brightness":321.89,"scan":1.11,"track":1.05,"acq_date":"2021-11-07","acq_time":822,"satellite":"Aqua","instrument":"MODIS","confidence":73,"version":"6.1NRT","bright_t31":299.25,"frp":13.22,"daynight":"D","latitude":18.58234,"longitude":77.92284}},{"type":"Feature","geometry":{"type":"Point","coordinates":[77.93098,18.45355]},"properties":{"brightness":313.25,"scan":2.34,"track":1.48,"acq_date":"2021-11-08","acq_time":552,"satellite":"Terra","instrument":"MODIS","confidence":44,"version":"6.1NRT","bright_t31":301.86,"frp":21.24,"daynight":"D","latitude":18.45355,"longitude":77.93098}},{"type":"Feature","geometry":{"type":"Point","coordinates":[77.92633,18.45024]},"properties":{"brightness":311.87,"scan":1.03,"track":1.01,"acq_date":"2021-11-09","acq_time":809,"satellite":"Aqua","instrument":"MODIS","confidence":60,"version":"6.1NRT","bright_t31":280.14,"frp":10.17,"daynight":"D","latitude":18.45024,"longitude":77.92633}},{"type":"Feature","geometry":{"type":"Point","coordinates":[77.80128,18.51391]},"properties":{"brightness":316.79,"scan":1.03,"track":1.02,"acq_date":"2021-11-09","acq_time":809,"satellite":"Aqua","instrument":"MODIS","confidence":71,"version":"6.1NRT","bright_t31":294.56,"frp":10.78,"daynight":"D","latitude":18.51391,"longitude":77.80128}},{"type":"Feature","geometry":{"type":"Point","coordinates":[77.79161,18.51247]},"properties":{"brightness":321.17,"scan":1.03,"track":1.02,"acq_date":"2021-11-09","acq_time":809,"satellite":"Aqua","instrument":"MODIS","confidence":76,"version":"6.1NRT","bright_t31":296.33,"frp":15.08,"daynight":"D","latitude":18.51247,"longitude":77.79161}},{"type":"Feature","geometry":{"type":"Point","coordinates":[78.32814,18.6379]},"properties":{"brightness":314.79,"scan":1.01,"track":1,"acq_date":"2021-11-09","acq_time":809,"satellite":"Aqua","instrument":"MODIS","confidence":33,"version":"6.1NRT","bright_t31":287.44,"frp":11.31,"daynight":"D","latitude":18.6379,"longitude":78.32814}},{"type":"Feature","geometry":{"type":"Point","coordinates":[77.97211,18.75299]},"properties":{"brightness":315.8,"scan":1.4,"track":1.17,"acq_date":"2021-11-10","acq_time":540,"satellite":"Terra","instrument":"MODIS","confidence":65,"version":"6.1NRT","bright_t31":299.79,"frp":11.33,"daynight":"D","latitude":18.75299,"longitude":77.97211}},{"type":"Feature","geometry":{"type":"Point","coordinates":[77.82817,18.65252]},"properties":{"brightness":328.67,"scan":1.37,"track":1.16,"acq_date":"2021-11-10","acq_time":540,"satellite":"Terra","instrument":"MODIS","confidence":82,"version":"6.1NRT","bright_t31":300.81,"frp":28.85,"daynight":"D","latitude":18.65252,"longitude":77.82817}},{"type":"Feature","geometry":{"type":"Point","coordinates":[77.81541,18.65465]},"properties":{"brightness":316.87,"scan":1.37,"track":1.16,"acq_date":"2021-11-10","acq_time":540,"satellite":"Terra","instrument":"MODIS","confidence":67,"version":"6.1NRT","bright_t31":301.37,"frp":9.62,"daynight":"D","latitude":18.65465,"longitude":77.81541}},{"type":"Feature","geometry":{"type":"Point","coordinates":[78.26103,18.11751]},"properties":{"brightness":314.27,"scan":1.5,"track":1.21,"acq_date":"2021-11-10","acq_time":540,"satellite":"Terra","instrument":"MODIS","confidence":65,"version":"6.1NRT","bright_t31":299.36,"frp":12.32,"daynight":"D","latitude":18.11751,"longitude":78.26103}},{"type":"Feature","geometry":{"type":"Point","coordinates":[77.74012,18.56425]},"properties":{"brightness":315.72,"scan":1.36,"track":1.16,"acq_date":"2021-11-10","acq_time":540,"satellite":"Terra","instrument":"MODIS","confidence":64,"version":"6.1NRT","bright_t31":300.78,"frp":8.35,"daynight":"D","latitude":18.56425,"longitude":77.74012}},{"type":"Feature","geometry":{"type":"Point","coordinates":[77.79318,18.60679]},"properties":{"brightness":310.56,"scan":1.46,"track":1.19,"acq_date":"2021-11-11","acq_time":756,"satellite":"Aqua","instrument":"MODIS","confidence":38,"version":"6.1NRT","bright_t31":283.78,"frp":11.68,"daynight":"D","latitude":18.60679,"longitude":77.79318}},{"type":"Feature","geometry":{"type":"Point","coordinates":[78.12257,18.73276]},"properties":{"brightness":310.29,"scan":1.03,"track":1.01,"acq_date":"2021-11-12","acq_time":527,"satellite":"Terra","instrument":"MODIS","confidence":44,"version":"6.1NRT","bright_t31":283.32,"frp":8.62,"daynight":"D","latitude":18.73276,"longitude":78.12257}},{"type":"Feature","geometry":{"type":"Point","coordinates":[77.79841,18.61572]},"properties":{"brightness":321.35,"scan":1.01,"track":1.01,"acq_date":"2021-11-12","acq_time":527,"satellite":"Terra","instrument":"MODIS","confidence":73,"version":"6.1NRT","bright_t31":296.15,"frp":9.66,"daynight":"D","latitude":18.61572,"longitude":77.79841}},{"type":"Feature","geometry":{"type":"Point","coordinates":[77.88341,18.74176]},"properties":{"brightness":329.47,"scan":1.34,"track":1.15,"acq_date":"2021-11-14","acq_time":826,"satellite":"Aqua","instrument":"MODIS","confidence":81,"version":"6.1NRT","bright_t31":297.05,"frp":25.97,"daynight":"D","latitude":18.74176,"longitude":77.88341}},{"type":"Feature","geometry":{"type":"Point","coordinates":[78.21943,18.82251]},"properties":{"brightness":320.13,"scan":1.41,"track":1.17,"acq_date":"2021-11-14","acq_time":826,"satellite":"Aqua","instrument":"MODIS","confidence":28,"version":"6.1NRT","bright_t31":296.94,"frp":11.13,"daynight":"D","latitude":18.82251,"longitude":78.21943}},{"type":"Feature","geometry":{"type":"Point","coordinates":[78.2272,18.81667]},"properties":{"brightness":322.16,"scan":1.41,"track":1.17,"acq_date":"2021-11-14","acq_time":826,"satellite":"Aqua","instrument":"MODIS","confidence":60,"version":"6.1NRT","bright_t31":296.38,"frp":15.37,"daynight":"D","latitude":18.81667,"longitude":78.2272}},{"type":"Feature","geometry":{"type":"Point","coordinates":[77.93888,18.65791]},"properties":{"brightness":320.37,"scan":1.34,"track":1.15,"acq_date":"2021-11-14","acq_time":826,"satellite":"Aqua","instrument":"MODIS","confidence":65,"version":"6.1NRT","bright_t31":297.46,"frp":10.38,"daynight":"D","latitude":18.65791,"longitude":77.93888}},{"type":"Feature","geometry":{"type":"Point","coordinates":[77.90859,18.74492]},"properties":{"brightness":319.43,"scan":1.34,"track":1.15,"acq_date":"2021-11-14","acq_time":826,"satellite":"Aqua","instrument":"MODIS","confidence":49,"version":"6.1NRT","bright_t31":294.87,"frp":9.43,"daynight":"D","latitude":18.74492,"longitude":77.90859}},{"type":"Feature","geometry":{"type":"Point","coordinates":[77.9515,18.65949]},"properties":{"brightness":322.08,"scan":1.35,"track":1.15,"acq_date":"2021-11-14","acq_time":826,"satellite":"Aqua","instrument":"MODIS","confidence":72,"version":"6.1NRT","bright_t31":298.5,"frp":12.81,"daynight":"D","latitude":18.65949,"longitude":77.9515}},{"type":"Feature","geometry":{"type":"Point","coordinates":[78.05625,18.9041]},"properties":{"brightness":317.22,"scan":1.38,"track":1.16,"acq_date":"2021-11-14","acq_time":826,"satellite":"Aqua","instrument":"MODIS","confidence":39,"version":"6.1NRT","bright_t31":296.44,"frp":12.19,"daynight":"D","latitude":18.9041,"longitude":78.05625}},{"type":"Feature","geometry":{"type":"Point","coordinates":[77.87888,18.62953]},"properties":{"brightness":319.5,"scan":1.33,"track":1.14,"acq_date":"2021-11-14","acq_time":826,"satellite":"Aqua","instrument":"MODIS","confidence":49,"version":"6.1NRT","bright_t31":294.84,"frp":9.4,"daynight":"D","latitude":18.62953,"longitude":77.87888}},{"type":"Feature","geometry":{"type":"Point","coordinates":[77.86916,18.60751]},"properties":{"brightness":326.47,"scan":1.33,"track":1.14,"acq_date":"2021-11-14","acq_time":826,"satellite":"Aqua","instrument":"MODIS","confidence":78,"version":"6.1NRT","bright_t31":296.1,"frp":19.75,"daynight":"D","latitude":18.60751,"longitude":77.86916}},{"type":"Feature","geometry":{"type":"Point","coordinates":[77.896,18.74334]},"properties":{"brightness":320.07,"scan":1.34,"track":1.15,"acq_date":"2021-11-14","acq_time":826,"satellite":"Aqua","instrument":"MODIS","confidence":46,"version":"6.1NRT","bright_t31":296.15,"frp":10.21,"daynight":"D","latitude":18.74334,"longitude":77.896}},{"type":"Feature","geometry":{"type":"Point","coordinates":[80.47597,18.32017]},"properties":{"brightness":309.83,"scan":4.75,"track":1.99,"acq_date":"2021-11-15","acq_time":557,"satellite":"Terra","instrument":"MODIS","confidence":31,"version":"6.1NRT","bright_t31":287.47,"frp":51.8,"daynight":"D","latitude":18.32017,"longitude":80.47597}},{"type":"Feature","geometry":{"type":"Point","coordinates":[80.15418,18.68975]},"properties":{"brightness":311.38,"scan":2.75,"track":1.59,"acq_date":"2021-11-15","acq_time":733,"satellite":"Aqua","instrument":"MODIS","confidence":36,"version":"6.1NRT","bright_t31":292.46,"frp":23.19,"daynight":"D","latitude":18.68975,"longitude":80.15418}},{"type":"Feature","geometry":{"type":"Point","coordinates":[80.58607,18.23248]},"properties":{"brightness":307.81,"scan":1.25,"track":1.11,"acq_date":"2021-11-16","acq_time":813,"satellite":"Aqua","instrument":"MODIS","confidence":0,"version":"6.1NRT","bright_t31":280.21,"frp":5.97,"daynight":"D","latitude":18.23248,"longitude":80.58607}},{"type":"Feature","geometry":{"type":"Point","coordinates":[77.89882,18.51262]},"properties":{"brightness":329.68,"scan":1.01,"track":1,"acq_date":"2021-11-16","acq_time":815,"satellite":"Aqua","instrument":"MODIS","confidence":76,"version":"6.1NRT","bright_t31":300.34,"frp":20.4,"daynight":"D","latitude":18.51262,"longitude":77.89882}},{"type":"Feature","geometry":{"type":"Point","coordinates":[77.79535,18.49799]},"properties":{"brightness":328.91,"scan":1,"track":1,"acq_date":"2021-11-16","acq_time":815,"satellite":"Aqua","instrument":"MODIS","confidence":82,"version":"6.1NRT","bright_t31":300.62,"frp":16.48,"daynight":"D","latitude":18.49799,"longitude":77.79535}},{"type":"Feature","geometry":{"type":"Point","coordinates":[77.75883,18.51111]},"properties":{"brightness":318.31,"scan":1,"track":1,"acq_date":"2021-11-16","acq_time":815,"satellite":"Aqua","instrument":"MODIS","confidence":44,"version":"6.1NRT","bright_t31":298,"frp":9.21,"daynight":"D","latitude":18.51111,"longitude":77.75883}},{"type":"Feature","geometry":{"type":"Point","coordinates":[77.74944,18.50978]},"properties":{"brightness":323.82,"scan":1,"track":1,"acq_date":"2021-11-16","acq_time":815,"satellite":"Aqua","instrument":"MODIS","confidence":76,"version":"6.1NRT","bright_t31":299.42,"frp":14.42,"daynight":"D","latitude":18.50978,"longitude":77.74944}},{"type":"Feature","geometry":{"type":"Point","coordinates":[78.16202,18.66922]},"properties":{"brightness":319.51,"scan":1.02,"track":1.01,"acq_date":"2021-11-16","acq_time":815,"satellite":"Aqua","instrument":"MODIS","confidence":52,"version":"6.1NRT","bright_t31":300.34,"frp":6.83,"daynight":"D","latitude":18.66922,"longitude":78.16202}},{"type":"Feature","geometry":{"type":"Point","coordinates":[78.01422,18.60193]},"properties":{"brightness":313.24,"scan":1.01,"track":1,"acq_date":"2021-11-16","acq_time":815,"satellite":"Aqua","instrument":"MODIS","confidence":19,"version":"6.1NRT","bright_t31":296.06,"frp":5.17,"daynight":"D","latitude":18.60193,"longitude":78.01422}},{"type":"Feature","geometry":{"type":"Point","coordinates":[77.78736,18.65347]},"properties":{"brightness":317.23,"scan":1,"track":1,"acq_date":"2021-11-16","acq_time":815,"satellite":"Aqua","instrument":"MODIS","confidence":41,"version":"6.1NRT","bright_t31":300.49,"frp":7.63,"daynight":"D","latitude":18.65347,"longitude":77.78736}},{"type":"Feature","geometry":{"type":"Point","coordinates":[80.50419,18.30357]},"properties":{"brightness":313.12,"scan":2.82,"track":1.6,"acq_date":"2021-11-17","acq_time":544,"satellite":"Terra","instrument":"MODIS","confidence":0,"version":"6.1NRT","bright_t31":290.2,"frp":23.63,"daynight":"D","latitude":18.30357,"longitude":80.50419}},{"type":"Feature","geometry":{"type":"Point","coordinates":[78.00749,18.77308]},"properties":{"brightness":325.68,"scan":1.15,"track":1.07,"acq_date":"2021-11-18","acq_time":802,"satellite":"Aqua","instrument":"MODIS","confidence":80,"version":"6.1NRT","bright_t31":299.47,"frp":17.66,"daynight":"D","latitude":18.77308,"longitude":78.00749}},{"type":"Feature","geometry":{"type":"Point","coordinates":[78.31248,18.65529]},"properties":{"brightness":316.42,"scan":1.12,"track":1.05,"acq_date":"2021-11-18","acq_time":802,"satellite":"Aqua","instrument":"MODIS","confidence":69,"version":"6.1NRT","bright_t31":293.03,"frp":7.62,"daynight":"D","latitude":18.65529,"longitude":78.31248}},{"type":"Feature","geometry":{"type":"Point","coordinates":[77.86588,18.67829]},"properties":{"brightness":321.4,"scan":1.85,"track":1.33,"acq_date":"2021-11-20","acq_time":750,"satellite":"Aqua","instrument":"MODIS","confidence":77,"version":"6.1NRT","bright_t31":291,"frp":30.77,"daynight":"D","latitude":18.67829,"longitude":77.86588}},{"type":"Feature","geometry":{"type":"Point","coordinates":[78.30453,18.65111]},"properties":{"brightness":320.76,"scan":1.72,"track":1.29,"acq_date":"2021-11-20","acq_time":750,"satellite":"Aqua","instrument":"MODIS","confidence":74,"version":"6.1NRT","bright_t31":293.51,"frp":22.91,"daynight":"D","latitude":18.65111,"longitude":78.30453}},{"type":"Feature","geometry":{"type":"Point","coordinates":[78.15477,17.98965]},"properties":{"brightness":313.91,"scan":1.81,"track":1.32,"acq_date":"2021-11-20","acq_time":750,"satellite":"Aqua","instrument":"MODIS","confidence":68,"version":"6.1NRT","bright_t31":291.82,"frp":17.59,"daynight":"D","latitude":17.98965,"longitude":78.15477}},{"type":"Feature","geometry":{"type":"Point","coordinates":[79.14471,17.80388]},"properties":{"brightness":313.05,"scan":1.01,"track":1.01,"acq_date":"2021-11-21","acq_time":522,"satellite":"Terra","instrument":"MODIS","confidence":56,"version":"6.1NRT","bright_t31":293.31,"frp":6.43,"daynight":"D","latitude":17.80388,"longitude":79.14471}},{"type":"Feature","geometry":{"type":"Point","coordinates":[78.44494,18.85679]},"properties":{"brightness":318.71,"scan":1,"track":1,"acq_date":"2021-11-21","acq_time":522,"satellite":"Terra","instrument":"MODIS","confidence":61,"version":"6.1NRT","bright_t31":296.04,"frp":9.37,"daynight":"D","latitude":18.85679,"longitude":78.44494}},{"type":"Feature","geometry":{"type":"Point","coordinates":[79.66639,18.71195]},"properties":{"brightness":315.64,"scan":1.03,"track":1.01,"acq_date":"2021-11-21","acq_time":522,"satellite":"Terra","instrument":"MODIS","confidence":49,"version":"6.1NRT","bright_t31":294.46,"frp":7.8,"daynight":"D","latitude":18.71195,"longitude":79.66639}},{"type":"Feature","geometry":{"type":"Point","coordinates":[77.91988,18.72069]},"properties":{"brightness":313.7,"scan":1.01,"track":1.01,"acq_date":"2021-11-21","acq_time":522,"satellite":"Terra","instrument":"MODIS","confidence":53,"version":"6.1NRT","bright_t31":292.98,"frp":5.93,"daynight":"D","latitude":18.72069,"longitude":77.91988}},{"type":"Feature","geometry":{"type":"Point","coordinates":[79.40076,18.45684]},"properties":{"brightness":318.05,"scan":1.02,"track":1.01,"acq_date":"2021-11-21","acq_time":522,"satellite":"Terra","instrument":"MODIS","confidence":64,"version":"6.1NRT","bright_t31":295.24,"frp":5.96,"daynight":"D","latitude":18.45684,"longitude":79.40076}},{"type":"Feature","geometry":{"type":"Point","coordinates":[80.71713,18.11741]},"properties":{"brightness":310.65,"scan":1.97,"track":1.37,"acq_date":"2021-11-22","acq_time":737,"satellite":"Aqua","instrument":"MODIS","confidence":28,"version":"6.1NRT","bright_t31":290.64,"frp":12.79,"daynight":"D","latitude":18.11741,"longitude":80.71713}},{"type":"Feature","geometry":{"type":"Point","coordinates":[79.84145,18.77976]},"properties":{"brightness":312.75,"scan":2.22,"track":1.44,"acq_date":"2021-11-22","acq_time":739,"satellite":"Aqua","instrument":"MODIS","confidence":0,"version":"6.1NRT","bright_t31":294.52,"frp":17.47,"daynight":"D","latitude":18.77976,"longitude":79.84145}},{"type":"Feature","geometry":{"type":"Point","coordinates":[79.39533,18.11458]},"properties":{"brightness":315.91,"scan":1.12,"track":1.06,"acq_date":"2021-11-23","acq_time":510,"satellite":"Terra","instrument":"MODIS","confidence":51,"version":"6.1NRT","bright_t31":295.96,"frp":7.46,"daynight":"D","latitude":18.11458,"longitude":79.39533}},{"type":"Feature","geometry":{"type":"Point","coordinates":[78.16444,17.99477]},"properties":{"brightness":324.85,"scan":1.12,"track":1.06,"acq_date":"2021-11-23","acq_time":822,"satellite":"Aqua","instrument":"MODIS","confidence":76,"version":"6.1NRT","bright_t31":297.56,"frp":16.58,"daynight":"D","latitude":17.99477,"longitude":78.16444}},{"type":"Feature","geometry":{"type":"Point","coordinates":[78.22621,18.01262]},"properties":{"brightness":323.98,"scan":1.13,"track":1.06,"acq_date":"2021-11-23","acq_time":822,"satellite":"Aqua","instrument":"MODIS","confidence":75,"version":"6.1NRT","bright_t31":300.36,"frp":13.51,"daynight":"D","latitude":18.01262,"longitude":78.22621}},{"type":"Feature","geometry":{"type":"Point","coordinates":[78.23674,18.01402]},"properties":{"brightness":318.08,"scan":1.13,"track":1.06,"acq_date":"2021-11-23","acq_time":822,"satellite":"Aqua","instrument":"MODIS","confidence":38,"version":"6.1NRT","bright_t31":298.36,"frp":6.78,"daynight":"D","latitude":18.01402,"longitude":78.23674}},{"type":"Feature","geometry":{"type":"Point","coordinates":[80.61634,18.21534]},"properties":{"brightness":311.89,"scan":1.57,"track":1.24,"acq_date":"2021-11-23","acq_time":822,"satellite":"Aqua","instrument":"MODIS","confidence":0,"version":"6.1NRT","bright_t31":294.33,"frp":8.98,"daynight":"D","latitude":18.21534,"longitude":80.61634}},{"type":"Feature","geometry":{"type":"Point","coordinates":[80.69247,18.15727]},"properties":{"brightness":311.91,"scan":3.82,"track":1.83,"acq_date":"2021-11-24","acq_time":552,"satellite":"Terra","instrument":"MODIS","confidence":0,"version":"6.1NRT","bright_t31":294.92,"frp":42.62,"daynight":"D","latitude":18.15727,"longitude":80.69247}},{"type":"Feature","geometry":{"type":"Point","coordinates":[80.46521,18.37133]},"properties":{"brightness":311.45,"scan":3.64,"track":1.79,"acq_date":"2021-11-24","acq_time":552,"satellite":"Terra","instrument":"MODIS","confidence":36,"version":"6.1NRT","bright_t31":294.26,"frp":32.98,"daynight":"D","latitude":18.37133,"longitude":80.46521}},{"type":"Feature","geometry":{"type":"Point","coordinates":[79.54081,18.73408]},"properties":{"brightness":315.25,"scan":1.74,"track":1.29,"acq_date":"2021-11-25","acq_time":457,"satellite":"Terra","instrument":"MODIS","confidence":53,"version":"6.1NRT","bright_t31":301.27,"frp":13.9,"daynight":"D","latitude":18.73408,"longitude":79.54081}},{"type":"Feature","geometry":{"type":"Point","coordinates":[79.5245,18.73598]},"properties":{"brightness":316.81,"scan":1.74,"track":1.29,"acq_date":"2021-11-25","acq_time":457,"satellite":"Terra","instrument":"MODIS","confidence":63,"version":"6.1NRT","bright_t31":301.78,"frp":16.48,"daynight":"D","latitude":18.73598,"longitude":79.5245}},{"type":"Feature","geometry":{"type":"Point","coordinates":[78.43318,18.907]},"properties":{"brightness":318.67,"scan":1,"track":1,"acq_date":"2021-11-25","acq_time":809,"satellite":"Aqua","instrument":"MODIS","confidence":67,"version":"6.1NRT","bright_t31":302.55,"frp":7.3,"daynight":"D","latitude":18.907,"longitude":78.43318}},{"type":"Feature","geometry":{"type":"Point","coordinates":[78.3672,18.89738]},"properties":{"brightness":318.51,"scan":1.01,"track":1,"acq_date":"2021-11-25","acq_time":809,"satellite":"Aqua","instrument":"MODIS","confidence":67,"version":"6.1NRT","bright_t31":303.16,"frp":6.9,"daynight":"D","latitude":18.89738,"longitude":78.3672}},{"type":"Feature","geometry":{"type":"Point","coordinates":[79.41119,18.48577]},"properties":{"brightness":315.29,"scan":1,"track":1,"acq_date":"2021-11-25","acq_time":809,"satellite":"Aqua","instrument":"MODIS","confidence":67,"version":"6.1NRT","bright_t31":298.11,"frp":5.93,"daynight":"D","latitude":18.48577,"longitude":79.41119}},{"type":"Feature","geometry":{"type":"Point","coordinates":[79.49268,18.37716]},"properties":{"brightness":311.49,"scan":1.01,"track":1,"acq_date":"2021-11-25","acq_time":809,"satellite":"Aqua","instrument":"MODIS","confidence":48,"version":"6.1NRT","bright_t31":290.23,"frp":4.58,"daynight":"D","latitude":18.37716,"longitude":79.49268}},{"type":"Feature","geometry":{"type":"Point","coordinates":[77.89969,18.39508]},"properties":{"brightness":316.48,"scan":1.03,"track":1.01,"acq_date":"2021-11-25","acq_time":809,"satellite":"Aqua","instrument":"MODIS","confidence":61,"version":"6.1NRT","bright_t31":300.55,"frp":6.91,"daynight":"D","latitude":18.39508,"longitude":77.89969}},{"type":"Feature","geometry":{"type":"Point","coordinates":[78.19645,18.8997]},"properties":{"brightness":320.91,"scan":1.01,"track":1.01,"acq_date":"2021-11-25","acq_time":809,"satellite":"Aqua","instrument":"MODIS","confidence":70,"version":"6.1NRT","bright_t31":305.84,"frp":8.68,"daynight":"D","latitude":18.8997,"longitude":78.19645}},{"type":"Feature","geometry":{"type":"Point","coordinates":[77.95732,18.84634]},"properties":{"brightness":318.84,"scan":1.02,"track":1.01,"acq_date":"2021-11-25","acq_time":809,"satellite":"Aqua","instrument":"MODIS","confidence":0,"version":"6.1NRT","bright_t31":303.77,"frp":6.41,"daynight":"D","latitude":18.84634,"longitude":77.95732}},{"type":"Feature","geometry":{"type":"Point","coordinates":[77.89926,18.78228]},"properties":{"brightness":320.41,"scan":1.03,"track":1.01,"acq_date":"2021-11-25","acq_time":809,"satellite":"Aqua","instrument":"MODIS","confidence":69,"version":"6.1NRT","bright_t31":305.34,"frp":7.21,"daynight":"D","latitude":18.78228,"longitude":77.89926}},{"type":"Feature","geometry":{"type":"Point","coordinates":[80.53284,18.24526]},"properties":{"brightness":313.32,"scan":1.06,"track":1.03,"acq_date":"2021-11-25","acq_time":809,"satellite":"Aqua","instrument":"MODIS","confidence":56,"version":"6.1NRT","bright_t31":290.64,"frp":5.78,"daynight":"D","latitude":18.24526,"longitude":80.53284}},{"type":"Feature","geometry":{"type":"Point","coordinates":[77.80704,18.6397]},"properties":{"brightness":323.99,"scan":1.03,"track":1.02,"acq_date":"2021-11-25","acq_time":809,"satellite":"Aqua","instrument":"MODIS","confidence":60,"version":"6.1NRT","bright_t31":302.69,"frp":10.05,"daynight":"D","latitude":18.6397,"longitude":77.80704}},{"type":"Feature","geometry":{"type":"Point","coordinates":[77.80856,18.63066]},"properties":{"brightness":338.54,"scan":1.03,"track":1.02,"acq_date":"2021-11-25","acq_time":809,"satellite":"Aqua","instrument":"MODIS","confidence":89,"version":"6.1NRT","bright_t31":303.65,"frp":29.61,"daynight":"D","latitude":18.63066,"longitude":77.80856}},{"type":"Feature","geometry":{"type":"Point","coordinates":[77.8281,18.49449]},"properties":{"brightness":316.38,"scan":1.03,"track":1.02,"acq_date":"2021-11-25","acq_time":809,"satellite":"Aqua","instrument":"MODIS","confidence":48,"version":"6.1NRT","bright_t31":300.21,"frp":6.46,"daynight":"D","latitude":18.49449,"longitude":77.8281}},{"type":"Feature","geometry":{"type":"Point","coordinates":[77.97389,18.50709]},"properties":{"brightness":313.32,"scan":1.02,"track":1.01,"acq_date":"2021-11-25","acq_time":809,"satellite":"Aqua","instrument":"MODIS","confidence":37,"version":"6.1NRT","bright_t31":293.6,"frp":5.08,"daynight":"D","latitude":18.50709,"longitude":77.97389}},{"type":"Feature","geometry":{"type":"Point","coordinates":[77.83941,18.46022]},"properties":{"brightness":318.67,"scan":1.03,"track":1.02,"acq_date":"2021-11-25","acq_time":809,"satellite":"Aqua","instrument":"MODIS","confidence":70,"version":"6.1NRT","bright_t31":302.86,"frp":7.73,"daynight":"D","latitude":18.46022,"longitude":77.83941}},{"type":"Feature","geometry":{"type":"Point","coordinates":[78.12962,17.94109]},"properties":{"brightness":324.01,"scan":1.02,"track":1.01,"acq_date":"2021-11-25","acq_time":809,"satellite":"Aqua","instrument":"MODIS","confidence":77,"version":"6.1NRT","bright_t31":304.59,"frp":12.28,"daynight":"D","latitude":17.94109,"longitude":78.12962}},{"type":"Feature","geometry":{"type":"Point","coordinates":[77.88115,18.30881]},"properties":{"brightness":319.02,"scan":1.03,"track":1.02,"acq_date":"2021-11-25","acq_time":809,"satellite":"Aqua","instrument":"MODIS","confidence":62,"version":"6.1NRT","bright_t31":302.09,"frp":7.78,"daynight":"D","latitude":18.30881,"longitude":77.88115}},{"type":"Feature","geometry":{"type":"Point","coordinates":[78.13356,18.07983]},"properties":{"brightness":320.95,"scan":1.02,"track":1.01,"acq_date":"2021-11-25","acq_time":809,"satellite":"Aqua","instrument":"MODIS","confidence":69,"version":"6.1NRT","bright_t31":305.3,"frp":8.66,"daynight":"D","latitude":18.07983,"longitude":78.13356}},{"type":"Feature","geometry":{"type":"Point","coordinates":[78.03624,18.78428]},"properties":{"brightness":317.97,"scan":1.02,"track":1.01,"acq_date":"2021-11-25","acq_time":809,"satellite":"Aqua","instrument":"MODIS","confidence":63,"version":"6.1NRT","bright_t31":303.1,"frp":6.58,"daynight":"D","latitude":18.78428,"longitude":78.03624}},{"type":"Feature","geometry":{"type":"Point","coordinates":[78.04578,18.7857]},"properties":{"brightness":320.88,"scan":1.02,"track":1.01,"acq_date":"2021-11-25","acq_time":809,"satellite":"Aqua","instrument":"MODIS","confidence":70,"version":"6.1NRT","bright_t31":303.04,"frp":9.56,"daynight":"D","latitude":18.7857,"longitude":78.04578}},{"type":"Feature","geometry":{"type":"Point","coordinates":[78.23164,18.07599]},"properties":{"brightness":325.8,"scan":1.02,"track":1.01,"acq_date":"2021-11-25","acq_time":809,"satellite":"Aqua","instrument":"MODIS","confidence":79,"version":"6.1NRT","bright_t31":303.74,"frp":15.33,"daynight":"D","latitude":18.07599,"longitude":78.23164}},{"type":"Feature","geometry":{"type":"Point","coordinates":[79.04455,18.19403]},"properties":{"brightness":318.21,"scan":1.69,"track":1.28,"acq_date":"2021-11-26","acq_time":540,"satellite":"Terra","instrument":"MODIS","confidence":71,"version":"6.1NRT","bright_t31":301.45,"frp":17.75,"daynight":"D","latitude":18.19403,"longitude":79.04455}},{"type":"Feature","geometry":{"type":"Point","coordinates":[79.66666,18.48177]},"properties":{"brightness":317.57,"scan":1.15,"track":1.07,"acq_date":"2021-11-27","acq_time":756,"satellite":"Aqua","instrument":"MODIS","confidence":72,"version":"6.1NRT","bright_t31":303.65,"frp":10.3,"daynight":"D","latitude":18.48177,"longitude":79.66666}},{"type":"Feature","geometry":{"type":"Point","coordinates":[79.66318,18.47622]},"properties":{"brightness":319,"scan":1.15,"track":1.07,"acq_date":"2021-11-27","acq_time":756,"satellite":"Aqua","instrument":"MODIS","confidence":57,"version":"6.1NRT","bright_t31":305.2,"frp":10.43,"daynight":"D","latitude":18.47622,"longitude":79.66318}},{"type":"Feature","geometry":{"type":"Point","coordinates":[79.22144,17.13754]},"properties":{"brightness":300.93,"scan":1.26,"track":1.11,"acq_date":"2021-11-27","acq_time":756,"satellite":"Aqua","instrument":"MODIS","confidence":23,"version":"6.1NRT","bright_t31":276.5,"frp":4.56,"daynight":"D","latitude":17.13754,"longitude":79.22144}},{"type":"Feature","geometry":{"type":"Point","coordinates":[78.12272,17.96385]},"properties":{"brightness":322.65,"scan":1.04,"track":1.02,"acq_date":"2021-11-28","acq_time":527,"satellite":"Terra","instrument":"MODIS","confidence":75,"version":"6.1NRT","bright_t31":303.77,"frp":11.82,"daynight":"D","latitude":17.96385,"longitude":78.12272}},{"type":"Feature","geometry":{"type":"Point","coordinates":[78.14866,17.94132]},"properties":{"brightness":316.89,"scan":1.04,"track":1.02,"acq_date":"2021-11-28","acq_time":527,"satellite":"Terra","instrument":"MODIS","confidence":58,"version":"6.1NRT","bright_t31":301.92,"frp":6.25,"daynight":"D","latitude":17.94132,"longitude":78.14866}},{"type":"Feature","geometry":{"type":"Point","coordinates":[78.28777,17.48547]},"properties":{"brightness":311.6,"scan":1.05,"track":1.03,"acq_date":"2021-11-28","acq_time":527,"satellite":"Terra","instrument":"MODIS","confidence":25,"version":"6.1NRT","bright_t31":297.72,"frp":4.48,"daynight":"D","latitude":17.48547,"longitude":78.28777}},{"type":"Feature","geometry":{"type":"Point","coordinates":[78.28927,17.4946]},"properties":{"brightness":316.92,"scan":1.05,"track":1.03,"acq_date":"2021-11-28","acq_time":527,"satellite":"Terra","instrument":"MODIS","confidence":66,"version":"6.1NRT","bright_t31":298.05,"frp":9.29,"daynight":"D","latitude":17.4946,"longitude":78.28927}},{"type":"Feature","geometry":{"type":"Point","coordinates":[78.72379,18.7288]},"properties":{"brightness":315.25,"scan":1.07,"track":1.03,"acq_date":"2021-11-28","acq_time":527,"satellite":"Terra","instrument":"MODIS","confidence":62,"version":"6.1NRT","bright_t31":302.01,"frp":6.32,"daynight":"D","latitude":18.7288,"longitude":78.72379}},{"type":"Feature","geometry":{"type":"Point","coordinates":[78.57877,16.76799]},"properties":{"brightness":308.15,"scan":1.1,"track":1.04,"acq_date":"2021-11-28","acq_time":527,"satellite":"Terra","instrument":"MODIS","confidence":49,"version":"6.1NRT","bright_t31":285.86,"frp":5.1,"daynight":"D","latitude":16.76799,"longitude":78.57877}},{"type":"Feature","geometry":{"type":"Point","coordinates":[77.8019,17.28348]},"properties":{"brightness":316.36,"scan":1.03,"track":1.01,"acq_date":"2021-11-28","acq_time":527,"satellite":"Terra","instrument":"MODIS","confidence":65,"version":"6.1NRT","bright_t31":300.22,"frp":8.12,"daynight":"D","latitude":17.28348,"longitude":77.8019}},{"type":"Feature","geometry":{"type":"Point","coordinates":[77.82708,18.58047]},"properties":{"brightness":315.4,"scan":1.01,"track":1.01,"acq_date":"2021-11-28","acq_time":527,"satellite":"Terra","instrument":"MODIS","confidence":61,"version":"6.1NRT","bright_t31":300.94,"frp":6.14,"daynight":"D","latitude":18.58047,"longitude":77.82708}},{"type":"Feature","geometry":{"type":"Point","coordinates":[79.43303,18.40764]},"properties":{"brightness":321.95,"scan":1.15,"track":1.07,"acq_date":"2021-11-28","acq_time":527,"satellite":"Terra","instrument":"MODIS","confidence":71,"version":"6.1NRT","bright_t31":302.96,"frp":13.54,"daynight":"D","latitude":18.40764,"longitude":79.43303}},{"type":"Feature","geometry":{"type":"Point","coordinates":[79.2457,18.57335]},"properties":{"brightness":317.57,"scan":1.12,"track":1.05,"acq_date":"2021-11-28","acq_time":527,"satellite":"Terra","instrument":"MODIS","confidence":69,"version":"6.1NRT","bright_t31":301.62,"frp":9.36,"daynight":"D","latitude":18.57335,"longitude":79.2457}},{"type":"Feature","geometry":{"type":"Point","coordinates":[78.68775,17.34944]},"properties":{"brightness":312.51,"scan":1.09,"track":1.04,"acq_date":"2021-11-28","acq_time":527,"satellite":"Terra","instrument":"MODIS","confidence":56,"version":"6.1NRT","bright_t31":297.41,"frp":5.3,"daynight":"D","latitude":17.34944,"longitude":78.68775}},{"type":"Feature","geometry":{"type":"Point","coordinates":[77.81141,17.28202]},"properties":{"brightness":320.8,"scan":1.03,"track":1.01,"acq_date":"2021-11-28","acq_time":527,"satellite":"Terra","instrument":"MODIS","confidence":73,"version":"6.1NRT","bright_t31":300.1,"frp":12.29,"daynight":"D","latitude":17.28202,"longitude":77.81141}},{"type":"Feature","geometry":{"type":"Point","coordinates":[78.05279,18.91526]},"properties":{"brightness":315.02,"scan":1.02,"track":1.01,"acq_date":"2021-11-28","acq_time":527,"satellite":"Terra","instrument":"MODIS","confidence":40,"version":"6.1NRT","bright_t31":299.92,"frp":8.35,"daynight":"D","latitude":18.91526,"longitude":78.05279}},{"type":"Feature","geometry":{"type":"Point","coordinates":[78.06035,18.82188]},"properties":{"brightness":317.62,"scan":1.02,"track":1.01,"acq_date":"2021-11-28","acq_time":527,"satellite":"Terra","instrument":"MODIS","confidence":66,"version":"6.1NRT","bright_t31":300.98,"frp":8.12,"daynight":"D","latitude":18.82188,"longitude":78.06035}},{"type":"Feature","geometry":{"type":"Point","coordinates":[78.0699,18.82043]},"properties":{"brightness":317.38,"scan":1.02,"track":1.01,"acq_date":"2021-11-28","acq_time":527,"satellite":"Terra","instrument":"MODIS","confidence":62,"version":"6.1NRT","bright_t31":301.29,"frp":7.9,"daynight":"D","latitude":18.82043,"longitude":78.0699}},{"type":"Feature","geometry":{"type":"Point","coordinates":[78.22933,18.75004]},"properties":{"brightness":312.33,"scan":1.03,"track":1.01,"acq_date":"2021-11-28","acq_time":527,"satellite":"Terra","instrument":"MODIS","confidence":45,"version":"6.1NRT","bright_t31":300.26,"frp":4.89,"daynight":"D","latitude":18.75004,"longitude":78.22933}},{"type":"Feature","geometry":{"type":"Point","coordinates":[79.395,18.50001]},"properties":{"brightness":319.72,"scan":1.01,"track":1.01,"acq_date":"2021-11-30","acq_time":514,"satellite":"Terra","instrument":"MODIS","confidence":72,"version":"6.1NRT","bright_t31":299.37,"frp":8.18,"daynight":"D","latitude":18.50001,"longitude":79.395}},{"type":"Feature","geometry":{"type":"Point","coordinates":[79.05077,18.90738]},"properties":{"brightness":312.32,"scan":1.04,"track":1.02,"acq_date":"2021-11-30","acq_time":514,"satellite":"Terra","instrument":"MODIS","confidence":56,"version":"6.1NRT","bright_t31":297.03,"frp":5.36,"daynight":"D","latitude":18.90738,"longitude":79.05077}},{"type":"Feature","geometry":{"type":"Point","coordinates":[78.53654,18.95234]},"properties":{"brightness":314.18,"scan":1.07,"track":1.03,"acq_date":"2021-11-30","acq_time":514,"satellite":"Terra","instrument":"MODIS","confidence":59,"version":"6.1NRT","bright_t31":296.71,"frp":6.67,"daynight":"D","latitude":18.95234,"longitude":78.53654}},{"type":"Feature","geometry":{"type":"Point","coordinates":[78.67918,18.78422]},"properties":{"brightness":312.98,"scan":1.06,"track":1.03,"acq_date":"2021-11-30","acq_time":514,"satellite":"Terra","instrument":"MODIS","confidence":57,"version":"6.1NRT","bright_t31":296.04,"frp":4.86,"daynight":"D","latitude":18.78422,"longitude":78.67918}},{"type":"Feature","geometry":{"type":"Point","coordinates":[79.29371,18.39798]},"properties":{"brightness":317.08,"scan":1.64,"track":1.26,"acq_date":"2021-11-30","acq_time":826,"satellite":"Aqua","instrument":"MODIS","confidence":69,"version":"6.1NRT","bright_t31":295.69,"frp":11.8,"daynight":"D","latitude":18.39798,"longitude":79.29371}},{"type":"Feature","geometry":{"type":"Point","coordinates":[78.65417,18.52569]},"properties":{"brightness":313.13,"scan":1.48,"track":1.2,"acq_date":"2021-11-30","acq_time":826,"satellite":"Aqua","instrument":"MODIS","confidence":20,"version":"6.1NRT","bright_t31":292.74,"frp":6.97,"daynight":"D","latitude":18.52569,"longitude":78.65417}},{"type":"Feature","geometry":{"type":"Point","coordinates":[79.25674,18.51829]},"properties":{"brightness":315.07,"scan":1.63,"track":1.26,"acq_date":"2021-11-30","acq_time":826,"satellite":"Aqua","instrument":"MODIS","confidence":65,"version":"6.1NRT","bright_t31":296.17,"frp":10.57,"daynight":"D","latitude":18.51829,"longitude":79.25674}},{"type":"Feature","geometry":{"type":"Point","coordinates":[79.53732,18.72568]},"properties":{"brightness":303.52,"scan":1.03,"track":1.01,"acq_date":"2021-12-01","acq_time":1652,"satellite":"Terra","instrument":"MODIS","confidence":56,"version":"6.1NRT","bright_t31":292.84,"frp":5.46,"daynight":"N","latitude":18.72568,"longitude":79.53732}},{"type":"Feature","geometry":{"type":"Point","coordinates":[79.53974,18.72061]},"properties":{"brightness":312.79,"scan":1.36,"track":1.16,"acq_date":"2021-12-02","acq_time":501,"satellite":"Terra","instrument":"MODIS","confidence":52,"version":"6.1NRT","bright_t31":298.36,"frp":8.48,"daynight":"D","latitude":18.72061,"longitude":79.53974}},{"type":"Feature","geometry":{"type":"Point","coordinates":[78.13041,17.9581]},"properties":{"brightness":321.15,"scan":1.01,"track":1,"acq_date":"2021-12-02","acq_time":813,"satellite":"Aqua","instrument":"MODIS","confidence":72,"version":"6.1NRT","bright_t31":300.73,"frp":8.92,"daynight":"D","latitude":17.9581,"longitude":78.13041}},{"type":"Feature","geometry":{"type":"Point","coordinates":[78.6162,19.06488]},"properties":{"brightness":312.53,"scan":1.04,"track":1.02,"acq_date":"2021-12-02","acq_time":815,"satellite":"Aqua","instrument":"MODIS","confidence":54,"version":"6.1NRT","bright_t31":297.18,"frp":6.49,"daynight":"D","latitude":19.06488,"longitude":78.6162}},{"type":"Feature","geometry":{"type":"Point","coordinates":[78.61131,18.94379]},"properties":{"brightness":312.38,"scan":1.04,"track":1.02,"acq_date":"2021-12-02","acq_time":815,"satellite":"Aqua","instrument":"MODIS","confidence":45,"version":"6.1NRT","bright_t31":297.59,"frp":4.17,"daynight":"D","latitude":18.94379,"longitude":78.61131}},{"type":"Feature","geometry":{"type":"Point","coordinates":[78.60637,19.06354]},"properties":{"brightness":311.95,"scan":1.04,"track":1.02,"acq_date":"2021-12-02","acq_time":815,"satellite":"Aqua","instrument":"MODIS","confidence":51,"version":"6.1NRT","bright_t31":297.34,"frp":6.36,"daynight":"D","latitude":19.06354,"longitude":78.60637}},{"type":"Feature","geometry":{"type":"Point","coordinates":[79.34806,18.29814]},"properties":{"brightness":317.83,"scan":1.09,"track":1.04,"acq_date":"2021-12-02","acq_time":815,"satellite":"Aqua","instrument":"MODIS","confidence":64,"version":"6.1NRT","bright_t31":302.19,"frp":7.12,"daynight":"D","latitude":18.29814,"longitude":79.34806}},{"type":"Feature","geometry":{"type":"Point","coordinates":[77.89909,18.77262]},"properties":{"brightness":320.25,"scan":1.01,"track":1,"acq_date":"2021-12-02","acq_time":815,"satellite":"Aqua","instrument":"MODIS","confidence":71,"version":"6.1NRT","bright_t31":299.26,"frp":8.19,"daynight":"D","latitude":18.77262,"longitude":77.89909}},{"type":"Feature","geometry":{"type":"Point","coordinates":[78.08208,18.69644]},"properties":{"brightness":314.27,"scan":1.01,"track":1.01,"acq_date":"2021-12-02","acq_time":815,"satellite":"Aqua","instrument":"MODIS","confidence":46,"version":"6.1NRT","bright_t31":295.38,"frp":3.6,"daynight":"D","latitude":18.69644,"longitude":78.08208}},{"type":"Feature","geometry":{"type":"Point","coordinates":[79.54018,18.72729]},"properties":{"brightness":302.73,"scan":1.01,"track":1,"acq_date":"2021-12-02","acq_time":2027,"satellite":"Aqua","instrument":"MODIS","confidence":51,"version":"6.1NRT","bright_t31":292.44,"frp":5.16,"daynight":"N","latitude":18.72729,"longitude":79.54018}},{"type":"Feature","geometry":{"type":"Point","coordinates":[78.25255,17.99744]},"properties":{"brightness":317.97,"scan":1.14,"track":1.07,"acq_date":"2021-12-04","acq_time":802,"satellite":"Aqua","instrument":"MODIS","confidence":62,"version":"6.1NRT","bright_t31":301.9,"frp":7.94,"daynight":"D","latitude":17.99744,"longitude":78.25255}},{"type":"Feature","geometry":{"type":"Point","coordinates":[78.38445,18.98934]},"properties":{"brightness":316.76,"scan":1.1,"track":1.05,"acq_date":"2021-12-04","acq_time":802,"satellite":"Aqua","instrument":"MODIS","confidence":64,"version":"6.1NRT","bright_t31":300.1,"frp":7.7,"daynight":"D","latitude":18.98934,"longitude":78.38445}},{"type":"Feature","geometry":{"type":"Point","coordinates":[79.83078,18.62608]},"properties":{"brightness":314.32,"scan":1.01,"track":1.01,"acq_date":"2021-12-04","acq_time":802,"satellite":"Aqua","instrument":"MODIS","confidence":46,"version":"6.1NRT","bright_t31":301.73,"frp":4.91,"daynight":"D","latitude":18.62608,"longitude":79.83078}},{"type":"Feature","geometry":{"type":"Point","coordinates":[79.78423,18.14974]},"properties":{"brightness":315.1,"scan":1.02,"track":1.01,"acq_date":"2021-12-04","acq_time":802,"satellite":"Aqua","instrument":"MODIS","confidence":55,"version":"6.1NRT","bright_t31":303.08,"frp":5.48,"daynight":"D","latitude":18.14974,"longitude":79.78423}},{"type":"Feature","geometry":{"type":"Point","coordinates":[78.16465,17.71683]},"properties":{"brightness":316.45,"scan":1.16,"track":1.07,"acq_date":"2021-12-04","acq_time":802,"satellite":"Aqua","instrument":"MODIS","confidence":58,"version":"6.1NRT","bright_t31":301.43,"frp":6.36,"daynight":"D","latitude":17.71683,"longitude":78.16465}},{"type":"Feature","geometry":{"type":"Point","coordinates":[79.66953,18.60226]},"properties":{"brightness":314.8,"scan":1.02,"track":1.01,"acq_date":"2021-12-04","acq_time":802,"satellite":"Aqua","instrument":"MODIS","confidence":59,"version":"6.1NRT","bright_t31":301.99,"frp":5.6,"daynight":"D","latitude":18.60226,"longitude":79.66953}},{"type":"Feature","geometry":{"type":"Point","coordinates":[77.83542,16.59691]},"properties":{"brightness":317.73,"scan":1.25,"track":1.11,"acq_date":"2021-12-04","acq_time":802,"satellite":"Aqua","instrument":"MODIS","confidence":64,"version":"6.1NRT","bright_t31":301.85,"frp":7.96,"daynight":"D","latitude":16.59691,"longitude":77.83542}},{"type":"Feature","geometry":{"type":"Point","coordinates":[78.41662,18.05228]},"properties":{"brightness":316.92,"scan":1.12,"track":1.06,"acq_date":"2021-12-04","acq_time":802,"satellite":"Aqua","instrument":"MODIS","confidence":54,"version":"6.1NRT","bright_t31":301.46,"frp":6.31,"daynight":"D","latitude":18.05228,"longitude":78.41662}},{"type":"Feature","geometry":{"type":"Point","coordinates":[78.12228,17.98659]},"properties":{"brightness":320,"scan":1.16,"track":1.07,"acq_date":"2021-12-04","acq_time":802,"satellite":"Aqua","instrument":"MODIS","confidence":60,"version":"6.1NRT","bright_t31":301.61,"frp":10.12,"daynight":"D","latitude":17.98659,"longitude":78.12228}},{"type":"Feature","geometry":{"type":"Point","coordinates":[79.4242,18.52039]},"properties":{"brightness":317.03,"scan":1.03,"track":1.01,"acq_date":"2021-12-04","acq_time":802,"satellite":"Aqua","instrument":"MODIS","confidence":55,"version":"6.1NRT","bright_t31":304.53,"frp":5.76,"daynight":"D","latitude":18.52039,"longitude":79.4242}},{"type":"Feature","geometry":{"type":"Point","coordinates":[77.87314,18.30634]},"properties":{"brightness":314.13,"scan":1.18,"track":1.08,"acq_date":"2021-12-04","acq_time":802,"satellite":"Aqua","instrument":"MODIS","confidence":50,"version":"6.1NRT","bright_t31":299.3,"frp":6.14,"daynight":"D","latitude":18.30634,"longitude":77.87314}},{"type":"Feature","geometry":{"type":"Point","coordinates":[78.66332,18.52384]},"properties":{"brightness":319.31,"scan":1.09,"track":1.04,"acq_date":"2021-12-04","acq_time":802,"satellite":"Aqua","instrument":"MODIS","confidence":62,"version":"6.1NRT","bright_t31":303.73,"frp":9.4,"daynight":"D","latitude":18.52384,"longitude":78.66332}},{"type":"Feature","geometry":{"type":"Point","coordinates":[80.48669,18.18707]},"properties":{"brightness":321.46,"scan":1,"track":1,"acq_date":"2021-12-04","acq_time":802,"satellite":"Aqua","instrument":"MODIS","confidence":73,"version":"6.1NRT","bright_t31":302.38,"frp":11.14,"daynight":"D","latitude":18.18707,"longitude":80.48669}},{"type":"Feature","geometry":{"type":"Point","coordinates":[79.53577,18.72128]},"properties":{"brightness":319.24,"scan":1.02,"track":1.01,"acq_date":"2021-12-04","acq_time":802,"satellite":"Aqua","instrument":"MODIS","confidence":64,"version":"6.1NRT","bright_t31":306.81,"frp":7.57,"daynight":"D","latitude":18.72128,"longitude":79.53577}},{"type":"Feature","geometry":{"type":"Point","coordinates":[78.72956,18.87664]},"properties":{"brightness":320.41,"scan":1.07,"track":1.03,"acq_date":"2021-12-04","acq_time":802,"satellite":"Aqua","instrument":"MODIS","confidence":70,"version":"6.1NRT","bright_t31":302.58,"frp":10.26,"daynight":"D","latitude":18.87664,"longitude":78.72956}},{"type":"Feature","geometry":{"type":"Point","coordinates":[79.28204,18.64643]},"properties":{"brightness":315.02,"scan":1.04,"track":1.02,"acq_date":"2021-12-04","acq_time":802,"satellite":"Aqua","instrument":"MODIS","confidence":59,"version":"6.1NRT","bright_t31":301.73,"frp":5.12,"daynight":"D","latitude":18.64643,"longitude":79.28204}},{"type":"Feature","geometry":{"type":"Point","coordinates":[79.03017,18.2019]},"properties":{"brightness":324.88,"scan":1.06,"track":1.03,"acq_date":"2021-12-04","acq_time":802,"satellite":"Aqua","instrument":"MODIS","confidence":76,"version":"6.1NRT","bright_t31":303.86,"frp":15.05,"daynight":"D","latitude":18.2019,"longitude":79.03017}},{"type":"Feature","geometry":{"type":"Point","coordinates":[78.86283,18.56409]},"properties":{"brightness":315.53,"scan":1.07,"track":1.03,"acq_date":"2021-12-04","acq_time":802,"satellite":"Aqua","instrument":"MODIS","confidence":56,"version":"6.1NRT","bright_t31":302.31,"frp":6.42,"daynight":"D","latitude":18.56409,"longitude":78.86283}},{"type":"Feature","geometry":{"type":"Point","coordinates":[77.78332,18.57953]},"properties":{"brightness":319.87,"scan":1.19,"track":1.08,"acq_date":"2021-12-04","acq_time":802,"satellite":"Aqua","instrument":"MODIS","confidence":69,"version":"6.1NRT","bright_t31":301.04,"frp":10.92,"daynight":"D","latitude":18.57953,"longitude":77.78332}},{"type":"Feature","geometry":{"type":"Point","coordinates":[79.41443,18.29749]},"properties":{"brightness":318.72,"scan":1.03,"track":1.02,"acq_date":"2021-12-04","acq_time":802,"satellite":"Aqua","instrument":"MODIS","confidence":63,"version":"6.1NRT","bright_t31":305.34,"frp":5.82,"daynight":"D","latitude":18.29749,"longitude":79.41443}},{"type":"Feature","geometry":{"type":"Point","coordinates":[79.30471,18.46542]},"properties":{"brightness":321.56,"scan":1.04,"track":1.02,"acq_date":"2021-12-04","acq_time":802,"satellite":"Aqua","instrument":"MODIS","confidence":72,"version":"6.1NRT","bright_t31":304.84,"frp":8.52,"daynight":"D","latitude":18.46542,"longitude":79.30471}},{"type":"Feature","geometry":{"type":"Point","coordinates":[77.85355,18.66284]},"properties":{"brightness":315.68,"scan":1.17,"track":1.08,"acq_date":"2021-12-04","acq_time":802,"satellite":"Aqua","instrument":"MODIS","confidence":53,"version":"6.1NRT","bright_t31":301.11,"frp":6.86,"daynight":"D","latitude":18.66284,"longitude":77.85355}},{"type":"Feature","geometry":{"type":"Point","coordinates":[78.39476,18.99093]},"properties":{"brightness":315.88,"scan":1.1,"track":1.05,"acq_date":"2021-12-04","acq_time":802,"satellite":"Aqua","instrument":"MODIS","confidence":61,"version":"6.1NRT","bright_t31":299.66,"frp":7.07,"daynight":"D","latitude":18.99093,"longitude":78.39476}},{"type":"Feature","geometry":{"type":"Point","coordinates":[78.40507,18.99252]},"properties":{"brightness":315.2,"scan":1.1,"track":1.05,"acq_date":"2021-12-04","acq_time":802,"satellite":"Aqua","instrument":"MODIS","confidence":43,"version":"6.1NRT","bright_t31":300.01,"frp":5.8,"daynight":"D","latitude":18.99252,"longitude":78.40507}},{"type":"Feature","geometry":{"type":"Point","coordinates":[79.69209,18.63037]},"properties":{"brightness":318.24,"scan":1.44,"track":1.19,"acq_date":"2021-12-05","acq_time":531,"satellite":"Terra","instrument":"MODIS","confidence":70,"version":"6.1NRT","bright_t31":302.03,"frp":16.66,"daynight":"D","latitude":18.63037,"longitude":79.69209}},{"type":"Feature","geometry":{"type":"Point","coordinates":[79.39883,18.39161]},"properties":{"brightness":316.03,"scan":1.39,"track":1.17,"acq_date":"2021-12-05","acq_time":533,"satellite":"Terra","instrument":"MODIS","confidence":65,"version":"6.1NRT","bright_t31":302.05,"frp":8,"daynight":"D","latitude":18.39161,"longitude":79.39883}},{"type":"Feature","geometry":{"type":"Point","coordinates":[77.37216,16.40296]},"properties":{"brightness":315.33,"scan":1.14,"track":1.06,"acq_date":"2021-12-05","acq_time":533,"satellite":"Terra","instrument":"MODIS","confidence":62,"version":"6.1NRT","bright_t31":300.47,"frp":6.72,"daynight":"D","latitude":16.40296,"longitude":77.37216}},{"type":"Feature","geometry":{"type":"Point","coordinates":[77.38269,16.40129]},"properties":{"brightness":315.08,"scan":1.14,"track":1.07,"acq_date":"2021-12-05","acq_time":533,"satellite":"Terra","instrument":"MODIS","confidence":59,"version":"6.1NRT","bright_t31":299.79,"frp":6.47,"daynight":"D","latitude":16.40129,"longitude":77.38269}},{"type":"Feature","geometry":{"type":"Point","coordinates":[80.46834,18.39347]},"properties":{"brightness":317.21,"scan":1.65,"track":1.26,"acq_date":"2021-12-05","acq_time":533,"satellite":"Terra","instrument":"MODIS","confidence":0,"version":"6.1NRT","bright_t31":304.02,"frp":17.33,"daynight":"D","latitude":18.39347,"longitude":80.46834}},{"type":"Feature","geometry":{"type":"Point","coordinates":[77.87328,18.36474]},"properties":{"brightness":314.91,"scan":1.15,"track":1.07,"acq_date":"2021-12-05","acq_time":533,"satellite":"Terra","instrument":"MODIS","confidence":50,"version":"6.1NRT","bright_t31":301.83,"frp":6.04,"daynight":"D","latitude":18.36474,"longitude":77.87328}},{"type":"Feature","geometry":{"type":"Point","coordinates":[80.91014,17.16659]},"properties":{"brightness":312.03,"scan":1.23,"track":1.1,"acq_date":"2021-12-06","acq_time":750,"satellite":"Aqua","instrument":"MODIS","confidence":39,"version":"6.1NRT","bright_t31":297.45,"frp":5.91,"daynight":"D","latitude":17.16659,"longitude":80.91014}},{"type":"Feature","geometry":{"type":"Point","coordinates":[78.06753,18.7488]},"properties":{"brightness":318.68,"scan":1.78,"track":1.31,"acq_date":"2021-12-06","acq_time":750,"satellite":"Aqua","instrument":"MODIS","confidence":67,"version":"6.1NRT","bright_t31":305.77,"frp":13.9,"daynight":"D","latitude":18.7488,"longitude":78.06753}},{"type":"Feature","geometry":{"type":"Point","coordinates":[78.45642,18.97709]},"properties":{"brightness":319.11,"scan":1.65,"track":1.26,"acq_date":"2021-12-06","acq_time":750,"satellite":"Aqua","instrument":"MODIS","confidence":69,"version":"6.1NRT","bright_t31":302.27,"frp":18.23,"daynight":"D","latitude":18.97709,"longitude":78.45642}},{"type":"Feature","geometry":{"type":"Point","coordinates":[78.91199,18.95187]},"properties":{"brightness":311.99,"scan":1.54,"track":1.22,"acq_date":"2021-12-06","acq_time":750,"satellite":"Aqua","instrument":"MODIS","confidence":22,"version":"6.1NRT","bright_t31":300.1,"frp":8.77,"daynight":"D","latitude":18.95187,"longitude":78.91199}},{"type":"Feature","geometry":{"type":"Point","coordinates":[78.38998,17.89039]},"properties":{"brightness":317.5,"scan":1.75,"track":1.3,"acq_date":"2021-12-06","acq_time":750,"satellite":"Aqua","instrument":"MODIS","confidence":63,"version":"6.1NRT","bright_t31":302.28,"frp":13.91,"daynight":"D","latitude":17.89039,"longitude":78.38998}},{"type":"Feature","geometry":{"type":"Point","coordinates":[79.40449,18.28428]},"properties":{"brightness":317.31,"scan":1.02,"track":1.01,"acq_date":"2021-12-07","acq_time":520,"satellite":"Terra","instrument":"MODIS","confidence":67,"version":"6.1NRT","bright_t31":302.63,"frp":6.36,"daynight":"D","latitude":18.28428,"longitude":79.40449}},{"type":"Feature","geometry":{"type":"Point","coordinates":[79.53701,18.72533]},"properties":{"brightness":317.7,"scan":1.02,"track":1.01,"acq_date":"2021-12-07","acq_time":520,"satellite":"Terra","instrument":"MODIS","confidence":68,"version":"6.1NRT","bright_t31":302.85,"frp":7.57,"daynight":"D","latitude":18.72533,"longitude":79.53701}},{"type":"Feature","geometry":{"type":"Point","coordinates":[80.45306,18.44717]},"properties":{"brightness":316.71,"scan":1.09,"track":1.04,"acq_date":"2021-12-07","acq_time":520,"satellite":"Terra","instrument":"MODIS","confidence":46,"version":"6.1NRT","bright_t31":305.39,"frp":10.19,"daynight":"D","latitude":18.44717,"longitude":80.45306}},{"type":"Feature","geometry":{"type":"Point","coordinates":[78.16086,15.93361]},"properties":{"brightness":318.39,"scan":1,"track":1,"acq_date":"2021-12-07","acq_time":522,"satellite":"Terra","instrument":"MODIS","confidence":63,"version":"6.1NRT","bright_t31":303.95,"frp":6.24,"daynight":"D","latitude":15.93361,"longitude":78.16086}},{"type":"Feature","geometry":{"type":"Point","coordinates":[79.99158,17.10587]},"properties":{"brightness":315.14,"scan":1.07,"track":1.03,"acq_date":"2021-12-07","acq_time":522,"satellite":"Terra","instrument":"MODIS","confidence":61,"version":"6.1NRT","bright_t31":300.79,"frp":6.08,"daynight":"D","latitude":17.10587,"longitude":79.99158}},{"type":"Feature","geometry":{"type":"Point","coordinates":[78.65191,18.53351]},"properties":{"brightness":311.85,"scan":1.92,"track":1.35,"acq_date":"2021-12-07","acq_time":834,"satellite":"Aqua","instrument":"MODIS","confidence":43,"version":"6.1NRT","bright_t31":295.52,"frp":13.07,"daynight":"D","latitude":18.53351,"longitude":78.65191}},{"type":"Feature","geometry":{"type":"Point","coordinates":[79.53309,18.72617]},"properties":{"brightness":305.73,"scan":1.01,"track":1,"acq_date":"2021-12-08","acq_time":1656,"satellite":"Terra","instrument":"MODIS","confidence":65,"version":"6.1NRT","bright_t31":294.43,"frp":6.23,"daynight":"N","latitude":18.72617,"longitude":79.53309}},{"type":"Feature","geometry":{"type":"Point","coordinates":[79.22173,17.22875]},"properties":{"brightness":316.1,"scan":1.12,"track":1.06,"acq_date":"2021-12-09","acq_time":510,"satellite":"Terra","instrument":"MODIS","confidence":64,"version":"6.1NRT","bright_t31":296.98,"frp":9.72,"daynight":"D","latitude":17.22875,"longitude":79.22173}},{"type":"Feature","geometry":{"type":"Point","coordinates":[80.46166,18.34276]},"properties":{"brightness":312.19,"scan":3.64,"track":1.79,"acq_date":"2021-12-10","acq_time":552,"satellite":"Terra","instrument":"MODIS","confidence":46,"version":"6.1NRT","bright_t31":293.92,"frp":39.58,"daynight":"D","latitude":18.34276,"longitude":80.46166}},{"type":"Feature","geometry":{"type":"Point","coordinates":[78.69548,18.79103]},"properties":{"brightness":317.55,"scan":1,"track":1,"acq_date":"2021-12-11","acq_time":809,"satellite":"Aqua","instrument":"MODIS","confidence":64,"version":"6.1NRT","bright_t31":304.05,"frp":6.62,"daynight":"D","latitude":18.79103,"longitude":78.69548}},{"type":"Feature","geometry":{"type":"Point","coordinates":[78.64342,17.91732]},"properties":{"brightness":313.75,"scan":1,"track":1,"acq_date":"2021-12-11","acq_time":809,"satellite":"Aqua","instrument":"MODIS","confidence":38,"version":"6.1NRT","bright_t31":301.34,"frp":4.03,"daynight":"D","latitude":17.91732,"longitude":78.64342}},{"type":"Feature","geometry":{"type":"Point","coordinates":[79.56209,18.42623]},"properties":{"brightness":320.65,"scan":1.01,"track":1,"acq_date":"2021-12-11","acq_time":809,"satellite":"Aqua","instrument":"MODIS","confidence":71,"version":"6.1NRT","bright_t31":304.49,"frp":8.52,"daynight":"D","latitude":18.42623,"longitude":79.56209}},{"type":"Feature","geometry":{"type":"Point","coordinates":[78.7719,18.79292]},"properties":{"brightness":316.96,"scan":1,"track":1,"acq_date":"2021-12-11","acq_time":809,"satellite":"Aqua","instrument":"MODIS","confidence":63,"version":"6.1NRT","bright_t31":304.12,"frp":6.21,"daynight":"D","latitude":18.79292,"longitude":78.7719}},{"type":"Feature","geometry":{"type":"Point","coordinates":[78.7856,18.76752]},"properties":{"brightness":320.85,"scan":1,"track":1,"acq_date":"2021-12-11","acq_time":809,"satellite":"Aqua","instrument":"MODIS","confidence":71,"version":"6.1NRT","bright_t31":303.53,"frp":9.65,"daynight":"D","latitude":18.76752,"longitude":78.7856}},{"type":"Feature","geometry":{"type":"Point","coordinates":[79.59747,18.61517]},"properties":{"brightness":317.09,"scan":1.01,"track":1.01,"acq_date":"2021-12-11","acq_time":809,"satellite":"Aqua","instrument":"MODIS","confidence":63,"version":"6.1NRT","bright_t31":303.42,"frp":7.33,"daynight":"D","latitude":18.61517,"longitude":79.59747}},{"type":"Feature","geometry":{"type":"Point","coordinates":[78.81207,17.25199]},"properties":{"brightness":315.82,"scan":1,"track":1,"acq_date":"2021-12-11","acq_time":809,"satellite":"Aqua","instrument":"MODIS","confidence":56,"version":"6.1NRT","bright_t31":298.58,"frp":7.21,"daynight":"D","latitude":17.25199,"longitude":78.81207}},{"type":"Feature","geometry":{"type":"Point","coordinates":[77.30589,16.4071]},"properties":{"brightness":324.07,"scan":1.12,"track":1.05,"acq_date":"2021-12-11","acq_time":809,"satellite":"Aqua","instrument":"MODIS","confidence":58,"version":"6.1NRT","bright_t31":301.32,"frp":17.62,"daynight":"D","latitude":16.4071,"longitude":77.30589}},{"type":"Feature","geometry":{"type":"Point","coordinates":[77.64739,17.22575]},"properties":{"brightness":313.99,"scan":1.07,"track":1.03,"acq_date":"2021-12-11","acq_time":809,"satellite":"Aqua","instrument":"MODIS","confidence":34,"version":"6.1NRT","bright_t31":297.85,"frp":6.01,"daynight":"D","latitude":17.22575,"longitude":77.64739}},{"type":"Feature","geometry":{"type":"Point","coordinates":[78.32729,17.92696]},"properties":{"brightness":320.72,"scan":1.01,"track":1.01,"acq_date":"2021-12-11","acq_time":809,"satellite":"Aqua","instrument":"MODIS","confidence":68,"version":"6.1NRT","bright_t31":304.25,"frp":8.77,"daynight":"D","latitude":17.92696,"longitude":78.32729}},{"type":"Feature","geometry":{"type":"Point","coordinates":[78.31784,17.92557]},"properties":{"brightness":321.02,"scan":1.01,"track":1.01,"acq_date":"2021-12-11","acq_time":809,"satellite":"Aqua","instrument":"MODIS","confidence":69,"version":"6.1NRT","bright_t31":304.25,"frp":9.21,"daynight":"D","latitude":17.92557,"longitude":78.31784}},{"type":"Feature","geometry":{"type":"Point","coordinates":[79.54788,18.79227]},"properties":{"brightness":316.87,"scan":1.01,"track":1.01,"acq_date":"2021-12-11","acq_time":809,"satellite":"Aqua","instrument":"MODIS","confidence":51,"version":"6.1NRT","bright_t31":302.55,"frp":6.31,"daynight":"D","latitude":18.79227,"longitude":79.54788}},{"type":"Feature","geometry":{"type":"Point","coordinates":[79.41502,18.46154]},"properties":{"brightness":321,"scan":1.01,"track":1,"acq_date":"2021-12-11","acq_time":809,"satellite":"Aqua","instrument":"MODIS","confidence":72,"version":"6.1NRT","bright_t31":304.6,"frp":8.61,"daynight":"D","latitude":18.46154,"longitude":79.41502}},{"type":"Feature","geometry":{"type":"Point","coordinates":[79.29368,18.66505]},"properties":{"brightness":315.88,"scan":1,"track":1,"acq_date":"2021-12-11","acq_time":809,"satellite":"Aqua","instrument":"MODIS","confidence":62,"version":"6.1NRT","bright_t31":302.35,"frp":5.59,"daynight":"D","latitude":18.66505,"longitude":79.29368}},{"type":"Feature","geometry":{"type":"Point","coordinates":[78.4353,19.05779]},"properties":{"brightness":317.95,"scan":1,"track":1,"acq_date":"2021-12-11","acq_time":809,"satellite":"Aqua","instrument":"MODIS","confidence":65,"version":"6.1NRT","bright_t31":302.87,"frp":7.36,"daynight":"D","latitude":19.05779,"longitude":78.4353}},{"type":"Feature","geometry":{"type":"Point","coordinates":[79.17477,18.46406]},"properties":{"brightness":316.92,"scan":1,"track":1,"acq_date":"2021-12-11","acq_time":809,"satellite":"Aqua","instrument":"MODIS","confidence":63,"version":"6.1NRT","bright_t31":301.78,"frp":5.81,"daynight":"D","latitude":18.46406,"longitude":79.17477}},{"type":"Feature","geometry":{"type":"Point","coordinates":[77.92896,16.54931]},"properties":{"brightness":318.12,"scan":1.06,"track":1.03,"acq_date":"2021-12-11","acq_time":809,"satellite":"Aqua","instrument":"MODIS","confidence":55,"version":"6.1NRT","bright_t31":302.9,"frp":7.06,"daynight":"D","latitude":16.54931,"longitude":77.92896}},{"type":"Feature","geometry":{"type":"Point","coordinates":[77.64312,18.09105]},"properties":{"brightness":318.53,"scan":1.05,"track":1.02,"acq_date":"2021-12-11","acq_time":809,"satellite":"Aqua","instrument":"MODIS","confidence":64,"version":"6.1NRT","bright_t31":304.49,"frp":7.23,"daynight":"D","latitude":18.09105,"longitude":77.64312}},{"type":"Feature","geometry":{"type":"Point","coordinates":[79.83025,18.70339]},"properties":{"brightness":315.92,"scan":1.02,"track":1.01,"acq_date":"2021-12-11","acq_time":809,"satellite":"Aqua","instrument":"MODIS","confidence":53,"version":"6.1NRT","bright_t31":302.64,"frp":7.29,"daynight":"D","latitude":18.70339,"longitude":79.83025}},{"type":"Feature","geometry":{"type":"Point","coordinates":[78.23125,18.00433]},"properties":{"brightness":321.64,"scan":1.02,"track":1.01,"acq_date":"2021-12-11","acq_time":809,"satellite":"Aqua","instrument":"MODIS","confidence":70,"version":"6.1NRT","bright_t31":304.21,"frp":9.82,"daynight":"D","latitude":18.00433,"longitude":78.23125}},{"type":"Feature","geometry":{"type":"Point","coordinates":[77.95861,18.24079]},"properties":{"brightness":317.61,"scan":1.03,"track":1.01,"acq_date":"2021-12-11","acq_time":809,"satellite":"Aqua","instrument":"MODIS","confidence":61,"version":"6.1NRT","bright_t31":304.88,"frp":6.33,"daynight":"D","latitude":18.24079,"longitude":77.95861}},{"type":"Feature","geometry":{"type":"Point","coordinates":[77.79862,18.47539]},"properties":{"brightness":318.35,"scan":1.03,"track":1.02,"acq_date":"2021-12-11","acq_time":809,"satellite":"Aqua","instrument":"MODIS","confidence":64,"version":"6.1NRT","bright_t31":304.18,"frp":6.8,"daynight":"D","latitude":18.47539,"longitude":77.79862}},{"type":"Feature","geometry":{"type":"Point","coordinates":[77.98244,18.5204]},"properties":{"brightness":316.86,"scan":1.02,"track":1.01,"acq_date":"2021-12-11","acq_time":809,"satellite":"Aqua","instrument":"MODIS","confidence":56,"version":"6.1NRT","bright_t31":304.3,"frp":6.28,"daynight":"D","latitude":18.5204,"longitude":77.98244}},{"type":"Feature","geometry":{"type":"Point","coordinates":[78.38406,18.83743]},"properties":{"brightness":313.68,"scan":1.01,"track":1,"acq_date":"2021-12-11","acq_time":809,"satellite":"Aqua","instrument":"MODIS","confidence":42,"version":"6.1NRT","bright_t31":301.66,"frp":5.11,"daynight":"D","latitude":18.83743,"longitude":78.38406}},{"type":"Feature","geometry":{"type":"Point","coordinates":[79.29819,18.30663]},"properties":{"brightness":319.92,"scan":1,"track":1,"acq_date":"2021-12-11","acq_time":809,"satellite":"Aqua","instrument":"MODIS","confidence":69,"version":"6.1NRT","bright_t31":303.5,"frp":8.48,"daynight":"D","latitude":18.30663,"longitude":79.29819}},{"type":"Feature","geometry":{"type":"Point","coordinates":[78.42315,18.75156]},"properties":{"brightness":315.88,"scan":1.01,"track":1,"acq_date":"2021-12-11","acq_time":809,"satellite":"Aqua","instrument":"MODIS","confidence":58,"version":"6.1NRT","bright_t31":303.22,"frp":6.06,"daynight":"D","latitude":18.75156,"longitude":78.42315}},{"type":"Feature","geometry":{"type":"Point","coordinates":[79.06931,18.19676]},"properties":{"brightness":317.96,"scan":1.24,"track":1.1,"acq_date":"2021-12-13","acq_time":756,"satellite":"Aqua","instrument":"MODIS","confidence":68,"version":"6.1NRT","bright_t31":302.55,"frp":11.07,"daynight":"D","latitude":18.19676,"longitude":79.06931}},{"type":"Feature","geometry":{"type":"Point","coordinates":[79.48926,18.96308]},"properties":{"brightness":314.5,"scan":1.15,"track":1.07,"acq_date":"2021-12-13","acq_time":756,"satellite":"Aqua","instrument":"MODIS","confidence":66,"version":"6.1NRT","bright_t31":302.38,"frp":7.73,"daynight":"D","latitude":18.96308,"longitude":79.48926}},{"type":"Feature","geometry":{"type":"Point","coordinates":[79.48454,18.95851]},"properties":{"brightness":317.12,"scan":1.15,"track":1.07,"acq_date":"2021-12-13","acq_time":756,"satellite":"Aqua","instrument":"MODIS","confidence":70,"version":"6.1NRT","bright_t31":302.6,"frp":9.59,"daynight":"D","latitude":18.95851,"longitude":79.48454}},{"type":"Feature","geometry":{"type":"Point","coordinates":[78.46542,18.9409]},"properties":{"brightness":310.7,"scan":1.31,"track":1.13,"acq_date":"2021-12-13","acq_time":756,"satellite":"Aqua","instrument":"MODIS","confidence":48,"version":"6.1NRT","bright_t31":297.51,"frp":5.42,"daynight":"D","latitude":18.9409,"longitude":78.46542}},{"type":"Feature","geometry":{"type":"Point","coordinates":[78.44178,19.03922]},"properties":{"brightness":313.7,"scan":1.31,"track":1.13,"acq_date":"2021-12-13","acq_time":756,"satellite":"Aqua","instrument":"MODIS","confidence":61,"version":"6.1NRT","bright_t31":300.97,"frp":7.41,"daynight":"D","latitude":19.03922,"longitude":78.44178}},{"type":"Feature","geometry":{"type":"Point","coordinates":[78.45798,18.98118]},"properties":{"brightness":312.34,"scan":1.31,"track":1.13,"acq_date":"2021-12-13","acq_time":756,"satellite":"Aqua","instrument":"MODIS","confidence":56,"version":"6.1NRT","bright_t31":298.07,"frp":6.89,"daynight":"D","latitude":18.98118,"longitude":78.45798}},{"type":"Feature","geometry":{"type":"Point","coordinates":[79.59589,18.62043]},"properties":{"brightness":315.83,"scan":1.15,"track":1.07,"acq_date":"2021-12-13","acq_time":756,"satellite":"Aqua","instrument":"MODIS","confidence":52,"version":"6.1NRT","bright_t31":303.03,"frp":8.02,"daynight":"D","latitude":18.62043,"longitude":79.59589}},{"type":"Feature","geometry":{"type":"Point","coordinates":[79.58773,18.20706]},"properties":{"brightness":314.83,"scan":1.16,"track":1.07,"acq_date":"2021-12-13","acq_time":756,"satellite":"Aqua","instrument":"MODIS","confidence":58,"version":"6.1NRT","bright_t31":299.98,"frp":6.72,"daynight":"D","latitude":18.20706,"longitude":79.58773}},{"type":"Feature","geometry":{"type":"Point","coordinates":[79.56007,18.52036]},"properties":{"brightness":309.85,"scan":1.01,"track":1,"acq_date":"2021-12-16","acq_time":514,"satellite":"Terra","instrument":"MODIS","confidence":56,"version":"6.1NRT","bright_t31":295.56,"frp":5.31,"daynight":"D","latitude":18.52036,"longitude":79.56007}},{"type":"Feature","geometry":{"type":"Point","coordinates":[79.98869,17.16824]},"properties":{"brightness":311.46,"scan":1,"track":1,"acq_date":"2021-12-16","acq_time":514,"satellite":"Terra","instrument":"MODIS","confidence":56,"version":"6.1NRT","bright_t31":298.02,"frp":5.09,"daynight":"D","latitude":17.16824,"longitude":79.98869}},{"type":"Feature","geometry":{"type":"Point","coordinates":[79.90814,16.81142]},"properties":{"brightness":311.57,"scan":1,"track":1,"acq_date":"2021-12-16","acq_time":514,"satellite":"Terra","instrument":"MODIS","confidence":58,"version":"6.1NRT","bright_t31":297.94,"frp":4.79,"daynight":"D","latitude":16.81142,"longitude":79.90814}},{"type":"Feature","geometry":{"type":"Point","coordinates":[79.53658,18.72619]},"properties":{"brightness":312.53,"scan":1.01,"track":1.01,"acq_date":"2021-12-16","acq_time":514,"satellite":"Terra","instrument":"MODIS","confidence":53,"version":"6.1NRT","bright_t31":295.51,"frp":6.78,"daynight":"D","latitude":18.72619,"longitude":79.53658}},{"type":"Feature","geometry":{"type":"Point","coordinates":[77.69031,16.90626]},"properties":{"brightness":312.96,"scan":1.12,"track":1.05,"acq_date":"2021-12-16","acq_time":514,"satellite":"Terra","instrument":"MODIS","confidence":56,"version":"6.1NRT","bright_t31":301.68,"frp":5.47,"daynight":"D","latitude":16.90626,"longitude":77.69031}},{"type":"Feature","geometry":{"type":"Point","coordinates":[78.14464,17.64255]},"properties":{"brightness":312.59,"scan":1.09,"track":1.04,"acq_date":"2021-12-16","acq_time":514,"satellite":"Terra","instrument":"MODIS","confidence":58,"version":"6.1NRT","bright_t31":300.9,"frp":5.16,"daynight":"D","latitude":17.64255,"longitude":78.14464}},{"type":"Feature","geometry":{"type":"Point","coordinates":[77.9033,16.22127]},"properties":{"brightness":318.47,"scan":1.25,"track":1.11,"acq_date":"2021-12-16","acq_time":826,"satellite":"Aqua","instrument":"MODIS","confidence":65,"version":"6.1NRT","bright_t31":303.7,"frp":10.26,"daynight":"D","latitude":16.22127,"longitude":77.9033}},{"type":"Feature","geometry":{"type":"Point","coordinates":[77.76205,16.38631]},"properties":{"brightness":314.65,"scan":1.23,"track":1.1,"acq_date":"2021-12-16","acq_time":826,"satellite":"Aqua","instrument":"MODIS","confidence":51,"version":"6.1NRT","bright_t31":302.39,"frp":5.21,"daynight":"D","latitude":16.38631,"longitude":77.76205}},{"type":"Feature","geometry":{"type":"Point","coordinates":[78.1553,17.66792]},"properties":{"brightness":317.8,"scan":1.35,"track":1.15,"acq_date":"2021-12-16","acq_time":826,"satellite":"Aqua","instrument":"MODIS","confidence":64,"version":"6.1NRT","bright_t31":304.41,"frp":11.46,"daynight":"D","latitude":17.66792,"longitude":78.1553}},{"type":"Feature","geometry":{"type":"Point","coordinates":[78.17649,18.08928]},"properties":{"brightness":319,"scan":1.37,"track":1.16,"acq_date":"2021-12-16","acq_time":826,"satellite":"Aqua","instrument":"MODIS","confidence":71,"version":"6.1NRT","bright_t31":304.54,"frp":12.88,"daynight":"D","latitude":18.08928,"longitude":78.17649}},{"type":"Feature","geometry":{"type":"Point","coordinates":[80.03208,18.44033]},"properties":{"brightness":311.85,"scan":1.87,"track":1.34,"acq_date":"2021-12-16","acq_time":826,"satellite":"Aqua","instrument":"MODIS","confidence":45,"version":"6.1NRT","bright_t31":298.66,"frp":14.81,"daynight":"D","latitude":18.44033,"longitude":80.03208}},{"type":"Feature","geometry":{"type":"Point","coordinates":[80.98596,17.26415]},"properties":{"brightness":315.03,"scan":1.1,"track":1.05,"acq_date":"2021-12-18","acq_time":501,"satellite":"Terra","instrument":"MODIS","confidence":67,"version":"6.1NRT","bright_t31":301.22,"frp":9.89,"daynight":"D","latitude":17.26415,"longitude":80.98596}},{"type":"Feature","geometry":{"type":"Point","coordinates":[80.00076,17.1103]},"properties":{"brightness":311.77,"scan":1.22,"track":1.1,"acq_date":"2021-12-18","acq_time":501,"satellite":"Terra","instrument":"MODIS","confidence":57,"version":"6.1NRT","bright_t31":301.22,"frp":5.99,"daynight":"D","latitude":17.1103,"longitude":80.00076}},{"type":"Feature","geometry":{"type":"Point","coordinates":[77.87868,16.30329]},"properties":{"brightness":320.15,"scan":1,"track":1,"acq_date":"2021-12-18","acq_time":813,"satellite":"Aqua","instrument":"MODIS","confidence":63,"version":"6.1NRT","bright_t31":306.16,"frp":9.13,"daynight":"D","latitude":16.30329,"longitude":77.87868}},{"type":"Feature","geometry":{"type":"Point","coordinates":[78.12573,17.97702]},"properties":{"brightness":319.36,"scan":1.01,"track":1,"acq_date":"2021-12-18","acq_time":815,"satellite":"Aqua","instrument":"MODIS","confidence":67,"version":"6.1NRT","bright_t31":306.44,"frp":8,"daynight":"D","latitude":17.97702,"longitude":78.12573}},{"type":"Feature","geometry":{"type":"Point","coordinates":[77.84587,18.57219]},"properties":{"brightness":318.52,"scan":1.01,"track":1,"acq_date":"2021-12-18","acq_time":815,"satellite":"Aqua","instrument":"MODIS","confidence":63,"version":"6.1NRT","bright_t31":303.34,"frp":8.82,"daynight":"D","latitude":18.57219,"longitude":77.84587}},{"type":"Feature","geometry":{"type":"Point","coordinates":[79.36974,18.47842]},"properties":{"brightness":313.29,"scan":1.1,"track":1.05,"acq_date":"2021-12-18","acq_time":815,"satellite":"Aqua","instrument":"MODIS","confidence":57,"version":"6.1NRT","bright_t31":302.07,"frp":4.26,"daynight":"D","latitude":18.47842,"longitude":79.36974}},{"type":"Feature","geometry":{"type":"Point","coordinates":[80.14994,18.1459]},"properties":{"brightness":316.04,"scan":1.19,"track":1.08,"acq_date":"2021-12-18","acq_time":815,"satellite":"Aqua","instrument":"MODIS","confidence":53,"version":"6.1NRT","bright_t31":304.54,"frp":9.38,"daynight":"D","latitude":18.1459,"longitude":80.14994}},{"type":"Feature","geometry":{"type":"Point","coordinates":[77.76289,17.11489]},"properties":{"brightness":317.01,"scan":1,"track":1,"acq_date":"2021-12-18","acq_time":815,"satellite":"Aqua","instrument":"MODIS","confidence":59,"version":"6.1NRT","bright_t31":303.92,"frp":7.11,"daynight":"D","latitude":17.11489,"longitude":77.76289}},{"type":"Feature","geometry":{"type":"Point","coordinates":[80.58562,18.1404]},"properties":{"brightness":316.53,"scan":1.25,"track":1.11,"acq_date":"2021-12-18","acq_time":815,"satellite":"Aqua","instrument":"MODIS","confidence":67,"version":"6.1NRT","bright_t31":304.16,"frp":10.14,"daynight":"D","latitude":18.1404,"longitude":80.58562}},{"type":"Feature","geometry":{"type":"Point","coordinates":[79.26446,18.93923]},"properties":{"brightness":313.26,"scan":1.1,"track":1.05,"acq_date":"2021-12-18","acq_time":815,"satellite":"Aqua","instrument":"MODIS","confidence":50,"version":"6.1NRT","bright_t31":302.36,"frp":6.74,"daynight":"D","latitude":18.93923,"longitude":79.26446}},{"type":"Feature","geometry":{"type":"Point","coordinates":[77.83646,18.57087]},"properties":{"brightness":315.42,"scan":1.01,"track":1,"acq_date":"2021-12-18","acq_time":815,"satellite":"Aqua","instrument":"MODIS","confidence":45,"version":"6.1NRT","bright_t31":304.43,"frp":5.78,"daynight":"D","latitude":18.57087,"longitude":77.83646}},{"type":"Feature","geometry":{"type":"Point","coordinates":[81.07282,17.26529]},"properties":{"brightness":313.84,"scan":1.3,"track":1.13,"acq_date":"2021-12-18","acq_time":815,"satellite":"Aqua","instrument":"MODIS","confidence":63,"version":"6.1NRT","bright_t31":302.12,"frp":10.57,"daynight":"D","latitude":17.26529,"longitude":81.07282}},{"type":"Feature","geometry":{"type":"Point","coordinates":[80.61262,17.38039]},"properties":{"brightness":324.2,"scan":1.23,"track":1.1,"acq_date":"2021-12-18","acq_time":815,"satellite":"Aqua","instrument":"MODIS","confidence":78,"version":"6.1NRT","bright_t31":302.97,"frp":21.04,"daynight":"D","latitude":17.38039,"longitude":80.61262}},{"type":"Feature","geometry":{"type":"Point","coordinates":[78.0859,17.10058]},"properties":{"brightness":311.14,"scan":1.96,"track":1.37,"acq_date":"2021-12-19","acq_time":544,"satellite":"Terra","instrument":"MODIS","confidence":52,"version":"6.1NRT","bright_t31":300.45,"frp":11.83,"daynight":"D","latitude":17.10058,"longitude":78.0859}},{"type":"Feature","geometry":{"type":"Point","coordinates":[80.64321,17.55824]},"properties":{"brightness":310.6,"scan":1.8,"track":1.32,"acq_date":"2021-12-20","acq_time":450,"satellite":"Terra","instrument":"MODIS","confidence":62,"version":"6.1NRT","bright_t31":295.95,"frp":15.01,"daynight":"D","latitude":17.55824,"longitude":80.64321}},{"type":"Feature","geometry":{"type":"Point","coordinates":[80.63261,17.55491]},"properties":{"brightness":307.64,"scan":1.81,"track":1.32,"acq_date":"2021-12-20","acq_time":450,"satellite":"Terra","instrument":"MODIS","confidence":48,"version":"6.1NRT","bright_t31":296.07,"frp":9.22,"daynight":"D","latitude":17.55491,"longitude":80.63261}},{"type":"Feature","geometry":{"type":"Point","coordinates":[80.68172,18.05273]},"properties":{"brightness":311.82,"scan":1,"track":1,"acq_date":"2021-12-20","acq_time":802,"satellite":"Aqua","instrument":"MODIS","confidence":47,"version":"6.1NRT","bright_t31":300.98,"frp":4.87,"daynight":"D","latitude":18.05273,"longitude":80.68172}},{"type":"Feature","geometry":{"type":"Point","coordinates":[80.06948,18.46089]},"properties":{"brightness":314.25,"scan":1,"track":1,"acq_date":"2021-12-20","acq_time":802,"satellite":"Aqua","instrument":"MODIS","confidence":59,"version":"6.1NRT","bright_t31":301.57,"frp":6.34,"daynight":"D","latitude":18.46089,"longitude":80.06948}},{"type":"Feature","geometry":{"type":"Point","coordinates":[80.46014,18.28729]},"properties":{"brightness":314.86,"scan":1,"track":1,"acq_date":"2021-12-20","acq_time":802,"satellite":"Aqua","instrument":"MODIS","confidence":50,"version":"6.1NRT","bright_t31":301.48,"frp":7.03,"daynight":"D","latitude":18.28729,"longitude":80.46014}},{"type":"Feature","geometry":{"type":"Point","coordinates":[80.46947,18.28864]},"properties":{"brightness":313.45,"scan":1,"track":1,"acq_date":"2021-12-20","acq_time":802,"satellite":"Aqua","instrument":"MODIS","confidence":31,"version":"6.1NRT","bright_t31":302.04,"frp":5.63,"daynight":"D","latitude":18.28864,"longitude":80.46947}},{"type":"Feature","geometry":{"type":"Point","coordinates":[80.51589,17.61346]},"properties":{"brightness":315.76,"scan":1,"track":1,"acq_date":"2021-12-20","acq_time":802,"satellite":"Aqua","instrument":"MODIS","confidence":67,"version":"6.1NRT","bright_t31":299.94,"frp":8.26,"daynight":"D","latitude":17.61346,"longitude":80.51589}},{"type":"Feature","geometry":{"type":"Point","coordinates":[80.52521,17.61481]},"properties":{"brightness":320.93,"scan":1,"track":1,"acq_date":"2021-12-20","acq_time":802,"satellite":"Aqua","instrument":"MODIS","confidence":75,"version":"6.1NRT","bright_t31":299.34,"frp":13.34,"daynight":"D","latitude":17.61481,"longitude":80.52521}},{"type":"Feature","geometry":{"type":"Point","coordinates":[80.70464,17.53997]},"properties":{"brightness":315.85,"scan":1,"track":1,"acq_date":"2021-12-20","acq_time":802,"satellite":"Aqua","instrument":"MODIS","confidence":63,"version":"6.1NRT","bright_t31":300.89,"frp":8.82,"daynight":"D","latitude":17.53997,"longitude":80.70464}},{"type":"Feature","geometry":{"type":"Point","coordinates":[79.6051,18.40179]},"properties":{"brightness":314.86,"scan":1.02,"track":1.01,"acq_date":"2021-12-20","acq_time":802,"satellite":"Aqua","instrument":"MODIS","confidence":64,"version":"6.1NRT","bright_t31":302.69,"frp":6.12,"daynight":"D","latitude":18.40179,"longitude":79.6051}},{"type":"Feature","geometry":{"type":"Point","coordinates":[78.04327,17.16846]},"properties":{"brightness":316.92,"scan":1.19,"track":1.09,"acq_date":"2021-12-20","acq_time":802,"satellite":"Aqua","instrument":"MODIS","confidence":63,"version":"6.1NRT","bright_t31":304.11,"frp":10.15,"daynight":"D","latitude":17.16846,"longitude":78.04327}},{"type":"Feature","geometry":{"type":"Point","coordinates":[79.51244,18.50844]},"properties":{"brightness":316.72,"scan":1.02,"track":1.01,"acq_date":"2021-12-20","acq_time":802,"satellite":"Aqua","instrument":"MODIS","confidence":68,"version":"6.1NRT","bright_t31":303.16,"frp":7.97,"daynight":"D","latitude":18.50844,"longitude":79.51244}},{"type":"Feature","geometry":{"type":"Point","coordinates":[79.53699,18.72353]},"properties":{"brightness":316.09,"scan":1.02,"track":1.01,"acq_date":"2021-12-20","acq_time":805,"satellite":"Aqua","instrument":"MODIS","confidence":67,"version":"6.1NRT","bright_t31":306.01,"frp":6.55,"daynight":"D","latitude":18.72353,"longitude":79.53699}},{"type":"Feature","geometry":{"type":"Point","coordinates":[79.03842,19.07321]},"properties":{"brightness":314.68,"scan":1.04,"track":1.02,"acq_date":"2021-12-20","acq_time":805,"satellite":"Aqua","instrument":"MODIS","confidence":59,"version":"6.1NRT","bright_t31":302.78,"frp":6.75,"daynight":"D","latitude":19.07321,"longitude":79.03842}},{"type":"Feature","geometry":{"type":"Point","coordinates":[79.66198,19.57215]},"properties":{"brightness":314.03,"scan":1.01,"track":1,"acq_date":"2021-12-20","acq_time":805,"satellite":"Aqua","instrument":"MODIS","confidence":50,"version":"6.1NRT","bright_t31":301.89,"frp":6.52,"daynight":"D","latitude":19.57215,"longitude":79.66198}},{"type":"Feature","geometry":{"type":"Point","coordinates":[78.5665,18.97332]},"properties":{"brightness":314.1,"scan":1.08,"track":1.04,"acq_date":"2021-12-20","acq_time":805,"satellite":"Aqua","instrument":"MODIS","confidence":60,"version":"6.1NRT","bright_t31":302.66,"frp":6.38,"daynight":"D","latitude":18.97332,"longitude":78.5665}},{"type":"Feature","geometry":{"type":"Point","coordinates":[77.90406,17.87602]},"properties":{"brightness":312.07,"scan":1.16,"track":1.07,"acq_date":"2021-12-21","acq_time":531,"satellite":"Terra","instrument":"MODIS","confidence":52,"version":"6.1NRT","bright_t31":302.02,"frp":5.42,"daynight":"D","latitude":17.87602,"longitude":77.90406}},{"type":"Feature","geometry":{"type":"Point","coordinates":[78.14507,17.64343]},"properties":{"brightness":313.58,"scan":1.21,"track":1.09,"acq_date":"2021-12-21","acq_time":531,"satellite":"Terra","instrument":"MODIS","confidence":60,"version":"6.1NRT","bright_t31":300.26,"frp":7.85,"daynight":"D","latitude":17.64343,"longitude":78.14507}},{"type":"Feature","geometry":{"type":"Point","coordinates":[77.55949,17.65832]},"properties":{"brightness":314.87,"scan":1.13,"track":1.06,"acq_date":"2021-12-21","acq_time":531,"satellite":"Terra","instrument":"MODIS","confidence":59,"version":"6.1NRT","bright_t31":301.23,"frp":7.99,"daynight":"D","latitude":17.65832,"longitude":77.55949}},{"type":"Feature","geometry":{"type":"Point","coordinates":[77.55293,17.65398]},"properties":{"brightness":314.34,"scan":1.13,"track":1.06,"acq_date":"2021-12-21","acq_time":531,"satellite":"Terra","instrument":"MODIS","confidence":61,"version":"6.1NRT","bright_t31":302.06,"frp":8.01,"daynight":"D","latitude":17.65398,"longitude":77.55293}},{"type":"Feature","geometry":{"type":"Point","coordinates":[78.63805,18.827]},"properties":{"brightness":312.92,"scan":1.24,"track":1.1,"acq_date":"2021-12-21","acq_time":531,"satellite":"Terra","instrument":"MODIS","confidence":63,"version":"6.1NRT","bright_t31":302.43,"frp":7.57,"daynight":"D","latitude":18.827,"longitude":78.63805}},{"type":"Feature","geometry":{"type":"Point","coordinates":[77.88945,17.88234]},"properties":{"brightness":317.52,"scan":1.16,"track":1.07,"acq_date":"2021-12-21","acq_time":531,"satellite":"Terra","instrument":"MODIS","confidence":51,"version":"6.1NRT","bright_t31":300.56,"frp":10.41,"daynight":"D","latitude":17.88234,"longitude":77.88945}},{"type":"Feature","geometry":{"type":"Point","coordinates":[77.9002,17.88059]},"properties":{"brightness":325.27,"scan":1.16,"track":1.07,"acq_date":"2021-12-21","acq_time":531,"satellite":"Terra","instrument":"MODIS","confidence":74,"version":"6.1NRT","bright_t31":302.08,"frp":20.39,"daynight":"D","latitude":17.88059,"longitude":77.9002}},{"type":"Feature","geometry":{"type":"Point","coordinates":[77.8933,17.87771]},"properties":{"brightness":327.81,"scan":1.16,"track":1.07,"acq_date":"2021-12-21","acq_time":531,"satellite":"Terra","instrument":"MODIS","confidence":70,"version":"6.1NRT","bright_t31":301.83,"frp":24.67,"daynight":"D","latitude":17.87771,"longitude":77.8933}},{"type":"Feature","geometry":{"type":"Point","coordinates":[78.07805,16.67056]},"properties":{"brightness":319.29,"scan":1.23,"track":1.1,"acq_date":"2021-12-21","acq_time":533,"satellite":"Terra","instrument":"MODIS","confidence":72,"version":"6.1NRT","bright_t31":303.67,"frp":13.05,"daynight":"D","latitude":16.67056,"longitude":78.07805}},{"type":"Feature","geometry":{"type":"Point","coordinates":[78.14276,17.14204]},"properties":{"brightness":313.88,"scan":1.22,"track":1.1,"acq_date":"2021-12-21","acq_time":533,"satellite":"Terra","instrument":"MODIS","confidence":60,"version":"6.1NRT","bright_t31":301.53,"frp":7.96,"daynight":"D","latitude":17.14204,"longitude":78.14276}},{"type":"Feature","geometry":{"type":"Point","coordinates":[77.45686,16.67807]},"properties":{"brightness":312.75,"scan":1.14,"track":1.07,"acq_date":"2021-12-21","acq_time":533,"satellite":"Terra","instrument":"MODIS","confidence":55,"version":"6.1NRT","bright_t31":301.33,"frp":5.47,"daynight":"D","latitude":16.67807,"longitude":77.45686}},{"type":"Feature","geometry":{"type":"Point","coordinates":[80.08292,18.484]},"properties":{"brightness":315.79,"scan":1.31,"track":1.14,"acq_date":"2021-12-22","acq_time":750,"satellite":"Aqua","instrument":"MODIS","confidence":36,"version":"6.1NRT","bright_t31":303.65,"frp":9.26,"daynight":"D","latitude":18.484,"longitude":80.08292}},{"type":"Feature","geometry":{"type":"Point","coordinates":[80.08106,18.49409]},"properties":{"brightness":315.38,"scan":1.31,"track":1.14,"acq_date":"2021-12-22","acq_time":750,"satellite":"Aqua","instrument":"MODIS","confidence":10,"version":"6.1NRT","bright_t31":303.91,"frp":8.47,"daynight":"D","latitude":18.49409,"longitude":80.08106}},{"type":"Feature","geometry":{"type":"Point","coordinates":[79.62241,18.74673]},"properties":{"brightness":320.22,"scan":1.39,"track":1.17,"acq_date":"2021-12-22","acq_time":750,"satellite":"Aqua","instrument":"MODIS","confidence":64,"version":"6.1NRT","bright_t31":304.04,"frp":18.15,"daynight":"D","latitude":18.74673,"longitude":79.62241}},{"type":"Feature","geometry":{"type":"Point","coordinates":[79.77681,17.80562]},"properties":{"brightness":313.56,"scan":1.4,"track":1.17,"acq_date":"2021-12-22","acq_time":750,"satellite":"Aqua","instrument":"MODIS","confidence":57,"version":"6.1NRT","bright_t31":302.45,"frp":6.97,"daynight":"D","latitude":17.80562,"longitude":79.77681}},{"type":"Feature","geometry":{"type":"Point","coordinates":[80.07601,18.49158]},"properties":{"brightness":314.45,"scan":1.31,"track":1.14,"acq_date":"2021-12-22","acq_time":750,"satellite":"Aqua","instrument":"MODIS","confidence":20,"version":"6.1NRT","bright_t31":303.89,"frp":7.77,"daynight":"D","latitude":18.49158,"longitude":80.07601}},{"type":"Feature","geometry":{"type":"Point","coordinates":[79.92893,17.84169]},"properties":{"brightness":319.59,"scan":1.37,"track":1.16,"acq_date":"2021-12-22","acq_time":750,"satellite":"Aqua","instrument":"MODIS","confidence":71,"version":"6.1NRT","bright_t31":304.88,"frp":15.18,"daynight":"D","latitude":17.84169,"longitude":79.92893}},{"type":"Feature","geometry":{"type":"Point","coordinates":[79.30438,18.26442]},"properties":{"brightness":314.18,"scan":1.48,"track":1.2,"acq_date":"2021-12-22","acq_time":750,"satellite":"Aqua","instrument":"MODIS","confidence":59,"version":"6.1NRT","bright_t31":302.88,"frp":9.51,"daynight":"D","latitude":18.26442,"longitude":79.30438}},{"type":"Feature","geometry":{"type":"Point","coordinates":[79.29697,18.2681]},"properties":{"brightness":315.91,"scan":1.48,"track":1.2,"acq_date":"2021-12-22","acq_time":750,"satellite":"Aqua","instrument":"MODIS","confidence":63,"version":"6.1NRT","bright_t31":303.8,"frp":11.59,"daynight":"D","latitude":18.2681,"longitude":79.29697}},{"type":"Feature","geometry":{"type":"Point","coordinates":[80.77526,17.56813]},"properties":{"brightness":312.92,"scan":1.23,"track":1.1,"acq_date":"2021-12-22","acq_time":750,"satellite":"Aqua","instrument":"MODIS","confidence":56,"version":"6.1NRT","bright_t31":302.35,"frp":7.25,"daynight":"D","latitude":17.56813,"longitude":80.77526}},{"type":"Feature","geometry":{"type":"Point","coordinates":[78.08138,18.79513]},"properties":{"brightness":315.45,"scan":1.76,"track":1.3,"acq_date":"2021-12-22","acq_time":752,"satellite":"Aqua","instrument":"MODIS","confidence":63,"version":"6.1NRT","bright_t31":304.12,"frp":12.48,"daynight":"D","latitude":18.79513,"longitude":78.08138}},{"type":"Feature","geometry":{"type":"Point","coordinates":[79.96296,17.78383]},"properties":{"brightness":312.78,"scan":1.06,"track":1.03,"acq_date":"2021-12-23","acq_time":520,"satellite":"Terra","instrument":"MODIS","confidence":61,"version":"6.1NRT","bright_t31":301.47,"frp":6.31,"daynight":"D","latitude":17.78383,"longitude":79.96296}},{"type":"Feature","geometry":{"type":"Point","coordinates":[80.83591,17.23872]},"properties":{"brightness":316.28,"scan":1.16,"track":1.07,"acq_date":"2021-12-23","acq_time":520,"satellite":"Terra","instrument":"MODIS","confidence":65,"version":"6.1NRT","bright_t31":300.27,"frp":11.55,"daynight":"D","latitude":17.23872,"longitude":80.83591}},{"type":"Feature","geometry":{"type":"Point","coordinates":[79.96185,17.11919]},"properties":{"brightness":310.69,"scan":1.07,"track":1.03,"acq_date":"2021-12-23","acq_time":520,"satellite":"Terra","instrument":"MODIS","confidence":51,"version":"6.1NRT","bright_t31":300.21,"frp":4.37,"daynight":"D","latitude":17.11919,"longitude":79.96185}},{"type":"Feature","geometry":{"type":"Point","coordinates":[80.02908,17.15605]},"properties":{"brightness":310.24,"scan":1.08,"track":1.04,"acq_date":"2021-12-23","acq_time":520,"satellite":"Terra","instrument":"MODIS","confidence":48,"version":"6.1NRT","bright_t31":299.81,"frp":4.38,"daynight":"D","latitude":17.15605,"longitude":80.02908}},{"type":"Feature","geometry":{"type":"Point","coordinates":[77.84205,17.63894]},"properties":{"brightness":315.72,"scan":1.01,"track":1,"acq_date":"2021-12-23","acq_time":520,"satellite":"Terra","instrument":"MODIS","confidence":62,"version":"6.1NRT","bright_t31":304.19,"frp":6.05,"daynight":"D","latitude":17.63894,"longitude":77.84205}},{"type":"Feature","geometry":{"type":"Point","coordinates":[78.09946,17.74033]},"properties":{"brightness":315.98,"scan":1,"track":1,"acq_date":"2021-12-23","acq_time":520,"satellite":"Terra","instrument":"MODIS","confidence":63,"version":"6.1NRT","bright_t31":301.77,"frp":7.15,"daynight":"D","latitude":17.74033,"longitude":78.09946}},{"type":"Feature","geometry":{"type":"Point","coordinates":[79.53613,18.72558]},"properties":{"brightness":318.48,"scan":1.02,"track":1.01,"acq_date":"2021-12-23","acq_time":520,"satellite":"Terra","instrument":"MODIS","confidence":73,"version":"6.1NRT","bright_t31":303.43,"frp":10.23,"daynight":"D","latitude":18.72558,"longitude":79.53613}},{"type":"Feature","geometry":{"type":"Point","coordinates":[79.93423,18.04646]},"properties":{"brightness":310.44,"scan":1.05,"track":1.02,"acq_date":"2021-12-23","acq_time":520,"satellite":"Terra","instrument":"MODIS","confidence":41,"version":"6.1NRT","bright_t31":299.78,"frp":3.97,"daynight":"D","latitude":18.04646,"longitude":79.93423}},{"type":"Feature","geometry":{"type":"Point","coordinates":[77.26384,16.45855]},"properties":{"brightness":316.77,"scan":1.44,"track":1.19,"acq_date":"2021-12-23","acq_time":834,"satellite":"Aqua","instrument":"MODIS","confidence":53,"version":"6.1NRT","bright_t31":304.91,"frp":9.62,"daynight":"D","latitude":16.45855,"longitude":77.26384}},{"type":"Feature","geometry":{"type":"Point","coordinates":[79.53322,18.72591]},"properties":{"brightness":303.27,"scan":1.01,"track":1,"acq_date":"2021-12-24","acq_time":1656,"satellite":"Terra","instrument":"MODIS","confidence":54,"version":"6.1NRT","bright_t31":293.18,"frp":5.5,"daynight":"N","latitude":18.72591,"longitude":79.53322}},{"type":"Feature","geometry":{"type":"Point","coordinates":[79.53445,18.72434]},"properties":{"brightness":315.43,"scan":1.12,"track":1.06,"acq_date":"2021-12-25","acq_time":508,"satellite":"Terra","instrument":"MODIS","confidence":69,"version":"6.1NRT","bright_t31":301,"frp":8.58,"daynight":"D","latitude":18.72434,"longitude":79.53445}},{"type":"Feature","geometry":{"type":"Point","coordinates":[79.69923,18.37862]},"properties":{"brightness":314.48,"scan":1.1,"track":1.05,"acq_date":"2021-12-25","acq_time":510,"satellite":"Terra","instrument":"MODIS","confidence":67,"version":"6.1NRT","bright_t31":298.87,"frp":9.18,"daynight":"D","latitude":18.37862,"longitude":79.69923}},{"type":"Feature","geometry":{"type":"Point","coordinates":[80.58603,18.14423]},"properties":{"brightness":314.27,"scan":1.57,"track":1.24,"acq_date":"2021-12-25","acq_time":822,"satellite":"Aqua","instrument":"MODIS","confidence":51,"version":"6.1NRT","bright_t31":300.69,"frp":10.76,"daynight":"D","latitude":18.14423,"longitude":80.58603}},{"type":"Feature","geometry":{"type":"Point","coordinates":[79.62851,18.33947]},"properties":{"brightness":315.72,"scan":1.37,"track":1.16,"acq_date":"2021-12-25","acq_time":822,"satellite":"Aqua","instrument":"MODIS","confidence":64,"version":"6.1NRT","bright_t31":301.12,"frp":9.99,"daynight":"D","latitude":18.33947,"longitude":79.62851}},{"type":"Feature","geometry":{"type":"Point","coordinates":[79.53722,17.73871]},"properties":{"brightness":313.28,"scan":1.32,"track":1.14,"acq_date":"2021-12-25","acq_time":822,"satellite":"Aqua","instrument":"MODIS","confidence":51,"version":"6.1NRT","bright_t31":300.36,"frp":7.13,"daynight":"D","latitude":17.73871,"longitude":79.53722}},{"type":"Feature","geometry":{"type":"Point","coordinates":[77.85103,17.35289]},"properties":{"brightness":318.08,"scan":1.08,"track":1.04,"acq_date":"2021-12-25","acq_time":822,"satellite":"Aqua","instrument":"MODIS","confidence":59,"version":"6.1NRT","bright_t31":306.8,"frp":7.26,"daynight":"D","latitude":17.35289,"longitude":77.85103}},{"type":"Feature","geometry":{"type":"Point","coordinates":[80.83595,18.02931]},"properties":{"brightness":316.83,"scan":1.04,"track":1.02,"acq_date":"2021-12-29","acq_time":756,"satellite":"Aqua","instrument":"MODIS","confidence":69,"version":"6.1NRT","bright_t31":299.37,"frp":8.79,"daynight":"D","latitude":18.02931,"longitude":80.83595}},{"type":"Feature","geometry":{"type":"Point","coordinates":[78.62585,17.26095]},"properties":{"brightness":312.18,"scan":1.35,"track":1.15,"acq_date":"2021-12-29","acq_time":756,"satellite":"Aqua","instrument":"MODIS","confidence":25,"version":"6.1NRT","bright_t31":296.55,"frp":7.86,"daynight":"D","latitude":17.26095,"longitude":78.62585}},{"type":"Feature","geometry":{"type":"Point","coordinates":[79.53605,18.72281]},"properties":{"brightness":312.74,"scan":1.15,"track":1.07,"acq_date":"2021-12-30","acq_time":527,"satellite":"Terra","instrument":"MODIS","confidence":64,"version":"6.1NRT","bright_t31":297.34,"frp":7.2,"daynight":"D","latitude":18.72281,"longitude":79.53605}},{"type":"Feature","geometry":{"type":"Point","coordinates":[80.53585,18.04629]},"properties":{"brightness":312.36,"scan":1.57,"track":1.23,"acq_date":"2021-12-31","acq_time":743,"satellite":"Aqua","instrument":"MODIS","confidence":57,"version":"6.1NRT","bright_t31":299.28,"frp":9.51,"daynight":"D","latitude":18.04629,"longitude":80.53585}},{"type":"Feature","geometry":{"type":"Point","coordinates":[79.96687,17.11802]},"properties":{"brightness":316.68,"scan":1.79,"track":1.31,"acq_date":"2021-12-31","acq_time":743,"satellite":"Aqua","instrument":"MODIS","confidence":68,"version":"6.1NRT","bright_t31":298.08,"frp":20.5,"daynight":"D","latitude":17.11802,"longitude":79.96687}},{"type":"Feature","geometry":{"type":"Point","coordinates":[79.53727,18.72165]},"properties":{"brightness":316.91,"scan":1.01,"track":1.01,"acq_date":"2022-01-01","acq_time":514,"satellite":"Terra","instrument":"MODIS","confidence":70,"version":"6.1NRT","bright_t31":301.14,"frp":8.03,"daynight":"D","latitude":18.72165,"longitude":79.53727}},{"type":"Feature","geometry":{"type":"Point","coordinates":[79.88824,17.86096]},"properties":{"brightness":313,"scan":1.79,"track":1.31,"acq_date":"2022-01-01","acq_time":826,"satellite":"Aqua","instrument":"MODIS","confidence":44,"version":"6.1NRT","bright_t31":295.61,"frp":10.43,"daynight":"D","latitude":17.86096,"longitude":79.88824}}]} \ No newline at end of file diff --git a/src/api/boundaries/TS_district_boundary.json b/src/api/app/assets/TS_district_boundary.json similarity index 100% rename from src/api/boundaries/TS_district_boundary.json rename to src/api/app/assets/TS_district_boundary.json diff --git a/src/api/app/assets/warehouses.geojson b/src/api/app/assets/warehouses.geojson new file mode 100644 index 00000000..b5813cd7 --- /dev/null +++ b/src/api/app/assets/warehouses.geojson @@ -0,0 +1,2638 @@ +{ + "type": "FeatureCollection", + "features": [ + { + "type": "Feature", + "geometry": { "type": "Point", "coordinates": [78.075036, 19.025617] }, + "properties": { + "capacity": "5000.0", + "district": "NIRMAL", + "latitude": "19.025617", + "longitude": "78.075036", + "occupancy": "2283.99", + "region": "KARIMNAGAR", + "status": "Active", + "vacancy": "2716.01", + "warehouse": "AMC LOKESHWARAM", + "wh_type": "AMC" + } + }, + { + "type": "Feature", + "geometry": { "type": "Point", "coordinates": [78.797487, 18.917258] }, + "properties": { + "capacity": "5000.0", + "district": "JAGTIAL", + "latitude": "18.917258", + "longitude": "78.797487", + "occupancy": "", + "region": "KARIMNAGAR", + "status": "Active", + "vacancy": "5000.0", + "warehouse": "MALLAPUR", + "wh_type": "AMC" + } + }, + { + "type": "Feature", + "geometry": { "type": "Point", "coordinates": [78.289097, 18.78821] }, + "properties": { + "capacity": "15000.0", + "district": "NIZAMABAD", + "latitude": "18.78821", + "longitude": "78.289097", + "occupancy": "", + "region": "KARIMNAGAR", + "status": "Active", + "vacancy": "15000.0", + "warehouse": "ARMOOR", + "wh_type": "HIRED" + } + }, + { + "type": "Feature", + "geometry": { "type": "Point", "coordinates": [79.061984, 17.648892] }, + "properties": { + "capacity": "5000.0", + "district": "NALGONDA", + "latitude": "17.648892", + "longitude": "79.061984", + "occupancy": "1833.06", + "region": "NALGONDA", + "status": "Active", + "vacancy": "3166.94", + "warehouse": "ALER AMC", + "wh_type": "AMC" + } + }, + { + "type": "Feature", + "geometry": { "type": "Point", "coordinates": [78.9116959, 18.7833326] }, + "properties": { + "capacity": "11340.0", + "district": "JAGTIAL", + "latitude": "18.7833326", + "longitude": "78.9116959", + "occupancy": "", + "region": "KARIMNAGAR", + "status": "Active", + "vacancy": "11340.0", + "warehouse": "JAGTIAL OWN", + "wh_type": "OWN" + } + }, + { + "type": "Feature", + "geometry": { "type": "Point", "coordinates": [79.4706887, 18.3023718] }, + "properties": { + "capacity": "17500.0", + "district": "KARIMNAGAR", + "latitude": "18.3023718", + "longitude": "79.4706887", + "occupancy": "22351.92", + "region": "KARIMNAGAR", + "status": "Active", + "vacancy": "-4851.92", + "warehouse": "JAMMIKUNTA OWN", + "wh_type": "OWN" + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [78.31664479999999, 18.3377718] + }, + "properties": { + "capacity": "15000.0", + "district": "KAMAREDDY", + "latitude": "18.3377718", + "longitude": "78.31664479999999", + "occupancy": "14705.32", + "region": "KARIMNAGAR", + "status": "Active", + "vacancy": "294.68", + "warehouse": "KAMAREDDY OWN", + "wh_type": "OWN" + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [79.1564403, 18.444290600000002] + }, + "properties": { + "capacity": "15500.0", + "district": "KARIMNAGAR", + "latitude": "18.444290600000002", + "longitude": "79.1564403", + "occupancy": "21481.74", + "region": "KARIMNAGAR", + "status": "Active", + "vacancy": "-5981.74", + "warehouse": "KARIMNAGAR OWN", + "wh_type": "OWN" + } + }, + { + "type": "Feature", + "geometry": { "type": "Point", "coordinates": [78.6998645, 18.82807] }, + "properties": { + "capacity": "3200.0", + "district": "JAGTIAL", + "latitude": "18.82807", + "longitude": "78.6998645", + "occupancy": "3397.73", + "region": "KARIMNAGAR", + "status": "Active", + "vacancy": "-197.73", + "warehouse": "KORUTLA OWN", + "wh_type": "OWN" + } + }, + { + "type": "Feature", + "geometry": { "type": "Point", "coordinates": [78.6344616, 18.8459999] }, + "properties": { + "capacity": "10700.0", + "district": "JAGTIAL", + "latitude": "18.8459999", + "longitude": "78.6344616", + "occupancy": "11147.56", + "region": "KARIMNAGAR", + "status": "Active", + "vacancy": "-447.56", + "warehouse": "METPALLI OWN", + "wh_type": "OWN" + } + }, + { + "type": "Feature", + "geometry": { "type": "Point", "coordinates": [79.3907814, 18.6262617] }, + "properties": { + "capacity": "8300.0", + "district": "PEDDAPALLY", + "latitude": "18.6262617", + "longitude": "79.3907814", + "occupancy": "2516.03", + "region": "KARIMNAGAR", + "status": "Active", + "vacancy": "5783.97", + "warehouse": "PEDDAPALLY OWN", + "wh_type": "OWN" + } + }, + { + "type": "Feature", + "geometry": { "type": "Point", "coordinates": [78.0546033, 18.6853362] }, + "properties": { + "capacity": "10000.0", + "district": "NIZAMABAD", + "latitude": "18.6853362", + "longitude": "78.0546033", + "occupancy": "10566.59", + "region": "KARIMNAGAR", + "status": "Active", + "vacancy": "-566.59", + "warehouse": "SARANGAPUR OWN", + "wh_type": "OWN" + } + }, + { + "type": "Feature", + "geometry": { "type": "Point", "coordinates": [78.641701, 19.044948] }, + "properties": { + "capacity": "13850.0", + "district": "NIRMAL", + "latitude": "19.044948", + "longitude": "78.641701", + "occupancy": "18591.7", + "region": "KARIMNAGAR", + "status": "Active", + "vacancy": "-4741.7", + "warehouse": "KHANAPUR IG", + "wh_type": "INVESTOR GODOWN" + } + }, + { + "type": "Feature", + "geometry": { "type": "Point", "coordinates": [78.289097, 18.78821] }, + "properties": { + "capacity": "2500.0", + "district": "NIZAMABAD", + "latitude": "18.78821", + "longitude": "78.289097", + "occupancy": "2755.16", + "region": "KARIMNAGAR", + "status": "Active", + "vacancy": "-255.16", + "warehouse": "ARMOOR AMC", + "wh_type": "AMC" + } + }, + { + "type": "Feature", + "geometry": { "type": "Point", "coordinates": [79.266953, 19.359937] }, + "properties": { + "capacity": "10000.0", + "district": "KOMARAM BHEEM ASIFABAD", + "latitude": "19.359937", + "longitude": "79.266953", + "occupancy": "", + "region": "KARIMNAGAR", + "status": "Active", + "vacancy": "10000.0", + "warehouse": "AMC ASIFABAD", + "wh_type": "AMC" + } + }, + { + "type": "Feature", + "geometry": { "type": "Point", "coordinates": [78.34742, 18.876767] }, + "properties": { + "capacity": "5000.0", + "district": "NIZAMABAD", + "latitude": "18.876767", + "longitude": "78.34742", + "occupancy": "602.62", + "region": "KARIMNAGAR", + "status": "Active", + "vacancy": "4397.38", + "warehouse": "BALKONDA AMC", + "wh_type": "AMC" + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [79.477047, 19.086889000000003] + }, + "properties": { + "capacity": "7500.0", + "district": "MANCHERIAL", + "latitude": "19.086889000000003", + "longitude": "79.477047", + "occupancy": "7086.72", + "region": "KARIMNAGAR", + "status": "Active", + "vacancy": "413.28", + "warehouse": "BELLAMPALLY AMC", + "wh_type": "AMC" + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [77.83935100000001, 19.014419] + }, + "properties": { + "capacity": "2500.0", + "district": "NIRMAL", + "latitude": "19.014419", + "longitude": "77.83935100000001", + "occupancy": "", + "region": "KARIMNAGAR", + "status": "Active", + "vacancy": "2500.0", + "warehouse": "AMC BHAINSA", + "wh_type": "AMC" + } + }, + { + "type": "Feature", + "geometry": { "type": "Point", "coordinates": [78.48745, 18.722294] }, + "properties": { + "capacity": "3650.0", + "district": "NIZAMABAD", + "latitude": "18.722294", + "longitude": "78.48745", + "occupancy": "", + "region": "KARIMNAGAR", + "status": "Active", + "vacancy": "3650.0", + "warehouse": "AMC BHEEMGAL", + "wh_type": "AMC" + } + }, + { + "type": "Feature", + "geometry": { "type": "Point", "coordinates": [77.804448, 18.469626] }, + "properties": { + "capacity": "7500.0", + "district": "KAMAREDDY", + "latitude": "18.469626", + "longitude": "77.804448", + "occupancy": "4927.16", + "region": "KARIMNAGAR", + "status": "Active", + "vacancy": "2572.84", + "warehouse": "BIRKUR AMC", + "wh_type": "AMC" + } + }, + { + "type": "Feature", + "geometry": { "type": "Point", "coordinates": [78.927961, 18.506035] }, + "properties": { + "capacity": "5000.0", + "district": "RAJANNA SIRCILLA", + "latitude": "18.506035", + "longitude": "78.927961", + "occupancy": "", + "region": "KARIMNAGAR", + "status": "Active", + "vacancy": "5000.0", + "warehouse": "AMC BOINPALLY", + "wh_type": "AMC" + } + }, + { + "type": "Feature", + "geometry": { "type": "Point", "coordinates": [78.63081, 18.371101] }, + "properties": { + "capacity": "10000.0", + "district": "RAJANNA SIRCILLA", + "latitude": "18.371101", + "longitude": "78.63081", + "occupancy": "1550.68", + "region": "KARIMNAGAR", + "status": "Active", + "vacancy": "8449.32", + "warehouse": "BOPPAPUR AMC", + "wh_type": "AMC" + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [78.80325500000001, 18.535589] + }, + "properties": { + "capacity": "5000.0", + "district": "RAJANNA SIRCILLA", + "latitude": "18.535589", + "longitude": "78.80325500000001", + "occupancy": "", + "region": "KARIMNAGAR", + "status": "Active", + "vacancy": "5000.0", + "warehouse": "AMC CHANDURTHY", + "wh_type": "AMC" + } + }, + { + "type": "Feature", + "geometry": { "type": "Point", "coordinates": [78.631138, 18.847078] }, + "properties": { + "capacity": "5000.0", + "district": "JAGTIAL", + "latitude": "18.847078", + "longitude": "78.631138", + "occupancy": "3184.19", + "region": "KARIMNAGAR", + "status": "Active", + "vacancy": "1815.81", + "warehouse": "AMC CHELGAL", + "wh_type": "AMC" + } + }, + { + "type": "Feature", + "geometry": { "type": "Point", "coordinates": [78.930255, 18.625535] }, + "properties": { + "capacity": "5000.0", + "district": "JAGTIAL", + "latitude": "18.625535", + "longitude": "78.930255", + "occupancy": "134.51", + "region": "KARIMNAGAR", + "status": "Active", + "vacancy": "4865.49", + "warehouse": "AMC CHEPYAL", + "wh_type": "AMC" + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [79.16905200000001, 18.850208] + }, + "properties": { + "capacity": "2500.0", + "district": "JAGTIAL", + "latitude": "18.850208", + "longitude": "79.16905200000001", + "occupancy": "", + "region": "KARIMNAGAR", + "status": "Active", + "vacancy": "2500.0", + "warehouse": "AMC DHARMAPURI", + "wh_type": "AMC" + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [78.455853, 19.440163000000002] + }, + "properties": { + "capacity": "2500.0", + "district": "ADILABAD", + "latitude": "19.440163000000002", + "longitude": "78.455853", + "occupancy": "1863.45", + "region": "KARIMNAGAR", + "status": "Active", + "vacancy": "636.55", + "warehouse": "ECHODA AMC", + "wh_type": "AMC" + } + }, + { + "type": "Feature", + "geometry": { "type": "Point", "coordinates": [78.926058, 18.320439] }, + "properties": { + "capacity": "5000.0", + "district": "RAJANNA SIRCILLA", + "latitude": "18.320439", + "longitude": "78.926058", + "occupancy": "1761.52", + "region": "KARIMNAGAR", + "status": "Active", + "vacancy": "3238.48", + "warehouse": "ILLANTHAKUNTA AMC", + "wh_type": "AMC" + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [79.06170999999999, 18.694221] + }, + "properties": { + "capacity": "5000.0", + "district": "KARIMNAGAR", + "latitude": "18.694221", + "longitude": "79.06170999999999", + "occupancy": "1314.1", + "region": "KARIMNAGAR", + "status": "Active", + "vacancy": "3685.9", + "warehouse": "GANGADHARA AMC", + "wh_type": "AMC" + } + }, + { + "type": "Feature", + "geometry": { "type": "Point", "coordinates": [79.246967, 18.496962] }, + "properties": { + "capacity": "10000.0", + "district": "PEDDAPALLY", + "latitude": "18.496962", + "longitude": "79.246967", + "occupancy": "15902.13", + "region": "KARIMNAGAR", + "status": "Active", + "vacancy": "-5902.13", + "warehouse": "GARREPALLY AMC", + "wh_type": "AMC" + } + }, + { + "type": "Feature", + "geometry": { "type": "Point", "coordinates": [79.261032, 18.216462] }, + "properties": { + "capacity": "2500.0", + "district": "KARIMNAGAR", + "latitude": "18.216462", + "longitude": "79.261032", + "occupancy": "", + "region": "KARIMNAGAR", + "status": "Active", + "vacancy": "2500.0", + "warehouse": "AMC HUZURABAD", + "wh_type": "AMC" + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [78.646914, 17.188829000000002] + }, + "properties": { + "capacity": "2500.0", + "district": "RANGA REDDY", + "latitude": "17.188829000000002", + "longitude": "78.646914", + "occupancy": "", + "region": "KARIMNAGAR", + "status": "Active", + "vacancy": "2500.0", + "warehouse": "AMC IBRAHIMPATNAM", + "wh_type": "AMC" + } + }, + { + "type": "Feature", + "geometry": { "type": "Point", "coordinates": [78.905007, 19.37511] }, + "properties": { + "capacity": "5000.0", + "district": "KOMARAM BHEEM ASIFABAD", + "latitude": "19.37511", + "longitude": "78.905007", + "occupancy": "", + "region": "KARIMNAGAR", + "status": "Active", + "vacancy": "5000.0", + "warehouse": "AMC JAINOOR", + "wh_type": "AMC" + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [78.9926, 19.114601999999998] + }, + "properties": { + "capacity": "5000.0", + "district": "MANCHERIAL", + "latitude": "19.114601999999998", + "longitude": "78.9926", + "occupancy": "", + "region": "KARIMNAGAR", + "status": "Active", + "vacancy": "5000.0", + "warehouse": "AMC JANNARAM", + "wh_type": "AMC" + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [79.30545699999999, 18.293354] + }, + "properties": { + "capacity": "5000.0", + "district": "KARIMNAGAR", + "latitude": "18.293354", + "longitude": "79.30545699999999", + "occupancy": "", + "region": "KARIMNAGAR", + "status": "Active", + "vacancy": "5000.0", + "warehouse": "AMC KESHAVAPATNAM", + "wh_type": "AMC" + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [78.69218000000001, 18.481007] + }, + "properties": { + "capacity": "5000.0", + "district": "RAJANNA SIRCILLA", + "latitude": "18.481007", + "longitude": "78.69218000000001", + "occupancy": "5571.1", + "region": "KARIMNAGAR", + "status": "Active", + "vacancy": "-571.1", + "warehouse": "AMC KONARAOPET", + "wh_type": "AMC" + } + }, + { + "type": "Feature", + "geometry": { "type": "Point", "coordinates": [77.840023, 19.23795] }, + "properties": { + "capacity": "5000.0", + "district": "ADILABAD", + "latitude": "19.23795", + "longitude": "77.840023", + "occupancy": "", + "region": "KARIMNAGAR", + "status": "Active", + "vacancy": "5000.0", + "warehouse": "AMC KUNTALA", + "wh_type": "AMC" + } + }, + { + "type": "Feature", + "geometry": { "type": "Point", "coordinates": [79.126723, 19.025272] }, + "properties": { + "capacity": "7500.0", + "district": "MANCHERIAL", + "latitude": "19.025272", + "longitude": "79.126723", + "occupancy": "", + "region": "KARIMNAGAR", + "status": "Active", + "vacancy": "7500.0", + "warehouse": "AMC LUXETTIPET", + "wh_type": "AMC" + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [78.128967, 18.758172000000002] + }, + "properties": { + "capacity": "5000.0", + "district": "NIZAMABAD", + "latitude": "18.758172000000002", + "longitude": "78.128967", + "occupancy": "", + "region": "KARIMNAGAR", + "status": "Active", + "vacancy": "5000.0", + "warehouse": "AMC MAKLOOR", + "wh_type": "AMC" + } + }, + { + "type": "Feature", + "geometry": { "type": "Point", "coordinates": [79.491351, 18.972732] }, + "properties": { + "capacity": "5000.0", + "district": "MANCHERIAL", + "latitude": "18.972732", + "longitude": "79.491351", + "occupancy": "4346.16", + "region": "KARIMNAGAR", + "status": "Active", + "vacancy": "653.84", + "warehouse": "MANDAMARRI AMC", + "wh_type": "AMC" + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [78.630788, 18.848076000000002] + }, + "properties": { + "capacity": "4000.0", + "district": "JAGTIAL", + "latitude": "18.848076000000002", + "longitude": "78.630788", + "occupancy": "", + "region": "KARIMNAGAR", + "status": "Active", + "vacancy": "4000.0", + "warehouse": "AMC METPALLY", + "wh_type": "AMC" + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [78.13833299999999, 18.840854999999998] + }, + "properties": { + "capacity": "5000.0", + "district": "NIZAMABAD", + "latitude": "18.840854999999998", + "longitude": "78.13833299999999", + "occupancy": "", + "region": "KARIMNAGAR", + "status": "Active", + "vacancy": "5000.0", + "warehouse": "AMC NANDIPET", + "wh_type": "AMC" + } + }, + { + "type": "Feature", + "geometry": { "type": "Point", "coordinates": [78.344084, 19.141303] }, + "properties": { + "capacity": "5000.0", + "district": "NIRMAL", + "latitude": "19.141303", + "longitude": "78.344084", + "occupancy": "4447.17", + "region": "KARIMNAGAR", + "status": "Active", + "vacancy": "552.83", + "warehouse": "AMC NIRMAL", + "wh_type": "AMC" + } + }, + { + "type": "Feature", + "geometry": { "type": "Point", "coordinates": [78.050802, 18.631435] }, + "properties": { + "capacity": "12500.0", + "district": "NIZAMABAD", + "latitude": "18.631435", + "longitude": "78.050802", + "occupancy": "", + "region": "KARIMNAGAR", + "status": "Active", + "vacancy": "12500.0", + "warehouse": "NIZAMABAD AMC", + "wh_type": "AMC" + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [77.82356, 18.228386999999998] + }, + "properties": { + "capacity": "5000.0", + "district": "KAMAREDDY", + "latitude": "18.228386999999998", + "longitude": "77.82356", + "occupancy": "835.26", + "region": "KARIMNAGAR", + "status": "Active", + "vacancy": "4164.74", + "warehouse": "PITLAM AMC", + "wh_type": "AMC" + } + }, + { + "type": "Feature", + "geometry": { "type": "Point", "coordinates": [77.894577, 19.228489] }, + "properties": { + "capacity": "5000.0", + "district": "ADILABAD", + "latitude": "19.228489", + "longitude": "77.894577", + "occupancy": "2120.75", + "region": "KARIMNAGAR", + "status": "Active", + "vacancy": "2879.25", + "warehouse": "AMC PULSI", + "wh_type": "AMC" + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [78.798278, 18.917089999999998] + }, + "properties": { + "capacity": "2500.0", + "district": "JAGTIAL", + "latitude": "18.917089999999998", + "longitude": "78.798278", + "occupancy": "1138.41", + "region": "KARIMNAGAR", + "status": "Active", + "vacancy": "1361.59", + "warehouse": "AMC RAIKAL", + "wh_type": "AMC" + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [77.935496, 18.754770999999998] + }, + "properties": { + "capacity": "5000.0", + "district": "NIZAMABAD", + "latitude": "18.754770999999998", + "longitude": "77.935496", + "occupancy": "4197.22", + "region": "KARIMNAGAR", + "status": "Active", + "vacancy": "802.78", + "warehouse": "RENJAL AMC", + "wh_type": "AMC" + } + }, + { + "type": "Feature", + "geometry": { "type": "Point", "coordinates": [78.344109, 19.141299] }, + "properties": { + "capacity": "5000.0", + "district": "NIRMAL", + "latitude": "19.141299", + "longitude": "78.344109", + "occupancy": "4379.92", + "region": "KARIMNAGAR", + "status": "Active", + "vacancy": "620.08", + "warehouse": "AMC SARANGAPUR", + "wh_type": "AMC" + } + }, + { + "type": "Feature", + "geometry": { "type": "Point", "coordinates": [78.363907, 18.800387] }, + "properties": { + "capacity": "5000.0", + "district": "NIZAMABAD", + "latitude": "18.800387", + "longitude": "78.363907", + "occupancy": "", + "region": "KARIMNAGAR", + "status": "Active", + "vacancy": "5000.0", + "warehouse": "AMC VELPUR", + "wh_type": "AMC" + } + }, + { + "type": "Feature", + "geometry": { "type": "Point", "coordinates": [79.193333, 18.76599] }, + "properties": { + "capacity": "3300.0", + "district": "JAGTIAL", + "latitude": "18.76599", + "longitude": "79.193333", + "occupancy": "2994.35", + "region": "KARIMNAGAR", + "status": "Active", + "vacancy": "305.65", + "warehouse": "AMC VELGATUR", + "wh_type": "AMC" + } + }, + { + "type": "Feature", + "geometry": { "type": "Point", "coordinates": [80.842822, 17.836021] }, + "properties": { + "capacity": "2500.0", + "district": "BHADRADRI KOTHAGUDEM", + "latitude": "17.836021", + "longitude": "80.842822", + "occupancy": "3523.32", + "region": "NALGONDA", + "status": "Active", + "vacancy": "-1023.32", + "warehouse": "ASWAPURAM AMC", + "wh_type": "AMC" + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [80.82865799999999, 17.499008] + }, + "properties": { + "capacity": "5000.0", + "district": "KHAMMAM", + "latitude": "17.499008", + "longitude": "80.82865799999999", + "occupancy": "9846.27", + "region": "NALGONDA", + "status": "Active", + "vacancy": "-4846.27", + "warehouse": "ASWARAOPETA AMC", + "wh_type": "AMC" + } + }, + { + "type": "Feature", + "geometry": { "type": "Point", "coordinates": [80.8953954, 17.6716533] }, + "properties": { + "capacity": "5000.0", + "district": "BHADRADRI KOTHAGUDEM", + "latitude": "17.6716533", + "longitude": "80.8953954", + "occupancy": "2502.2", + "region": "NALGONDA", + "status": "Active", + "vacancy": "2497.8", + "warehouse": "BHADRACHALAM AMC", + "wh_type": "AMC" + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [80.82996700000001, 17.86572] + }, + "properties": { + "capacity": "5000.0", + "district": "BHADRADRI KOTHAGUDEM", + "latitude": "17.86572", + "longitude": "80.82996700000001", + "occupancy": "", + "region": "NALGONDA", + "status": "Active", + "vacancy": "5000.0", + "warehouse": "BHURGUMPADU AMC", + "wh_type": "AMC" + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [80.65609, 17.383760000000002] + }, + "properties": { + "capacity": "5000.0", + "district": "BHADRADRI KOTHAGUDEM", + "latitude": "17.383760000000002", + "longitude": "80.65609", + "occupancy": "", + "region": "NALGONDA", + "status": "Active", + "vacancy": "5000.0", + "warehouse": "AMC CHANDRUGONDA", + "wh_type": "AMC" + } + }, + { + "type": "Feature", + "geometry": { "type": "Point", "coordinates": [79.123465, 17.233005] }, + "properties": { + "capacity": "2500.0", + "district": "NALGONDA", + "latitude": "17.233005", + "longitude": "79.123465", + "occupancy": "", + "region": "NALGONDA", + "status": "Active", + "vacancy": "2500.0", + "warehouse": "AMC CHITYAL", + "wh_type": "AMC" + } + }, + { + "type": "Feature", + "geometry": { "type": "Point", "coordinates": [80.092939, 17.283618] }, + "properties": { + "capacity": "2000.0", + "district": "BHADRADRI KOTHAGUDEM", + "latitude": "17.283618", + "longitude": "80.092939", + "occupancy": "1674.1", + "region": "NALGONDA", + "status": "Active", + "vacancy": "325.9", + "warehouse": "AMC DAMMAPETA", + "wh_type": "AMC" + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [80.27799399999999, 17.395055] + }, + "properties": { + "capacity": "5000.0", + "district": "KHAMMAM", + "latitude": "17.395055", + "longitude": "80.27799399999999", + "occupancy": "", + "region": "NALGONDA", + "status": "Active", + "vacancy": "5000.0", + "warehouse": "AMC KAMEPALLY", + "wh_type": "AMC" + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [80.46725699999999, 16.812122] + }, + "properties": { + "capacity": "5000.0", + "district": "KHAMMAM", + "latitude": "16.812122", + "longitude": "80.46725699999999", + "occupancy": "", + "region": "NALGONDA", + "status": "Active", + "vacancy": "5000.0", + "warehouse": "AMC MADHIRA", + "wh_type": "AMC" + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [80.46257299999999, 17.165518] + }, + "properties": { + "capacity": "5000.0", + "district": "BHADRADRI KOTHAGUDEM", + "latitude": "17.165518", + "longitude": "80.46257299999999", + "occupancy": "7312.82", + "region": "NALGONDA", + "status": "Active", + "vacancy": "-2312.82", + "warehouse": "TEKULAPALLY AMC", + "wh_type": "AMC" + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [79.420086, 17.012057000000002] + }, + "properties": { + "capacity": "5000.0", + "district": "NALGONDA", + "latitude": "17.012057000000002", + "longitude": "79.420086", + "occupancy": "5500.28", + "region": "NALGONDA", + "status": "Active", + "vacancy": "-500.28", + "warehouse": "THIPPARTHY AMC", + "wh_type": "AMC" + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [80.291854, 17.211038000000002] + }, + "properties": { + "capacity": "6100.0", + "district": "KHAMMAM", + "latitude": "17.211038000000002", + "longitude": "80.291854", + "occupancy": "4271.35", + "region": "NALGONDA", + "status": "Active", + "vacancy": "1828.65", + "warehouse": "WYRA-AMC", + "wh_type": "AMC" + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [78.89102609999999, 17.521638199999998] + }, + "properties": { + "capacity": "3700.0", + "district": "YADADHRI", + "latitude": "17.521638199999998", + "longitude": "78.89102609999999", + "occupancy": "4128.76", + "region": "NALGONDA", + "status": "Active", + "vacancy": "-428.76", + "warehouse": "BHONGIR OWN", + "wh_type": "OWN" + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [80.13312979999999, 17.237901899999997] + }, + "properties": { + "capacity": "7300.0", + "district": "KHAMMAM", + "latitude": "17.237901899999997", + "longitude": "80.13312979999999", + "occupancy": "3249.05", + "region": "NALGONDA", + "status": "Active", + "vacancy": "4050.95", + "warehouse": "KHAMMAM-I OWN", + "wh_type": "OWN" + } + }, + { + "type": "Feature", + "geometry": { "type": "Point", "coordinates": [80.092939, 17.283618] }, + "properties": { + "capacity": "0.0", + "district": "KHAMMAM", + "latitude": "17.283618", + "longitude": "80.092939", + "occupancy": "", + "region": "NALGONDA", + "status": "Active", + "vacancy": "0.0", + "warehouse": "KHAMMAM(IG) / PONNEKAL", + "wh_type": "INVESTOR GODOWN" + } + }, + { + "type": "Feature", + "geometry": { "type": "Point", "coordinates": [80.1145317, 17.2438029] }, + "properties": { + "capacity": "16500.0", + "district": "KHAMMAM", + "latitude": "17.2438029", + "longitude": "80.1145317", + "occupancy": "14186.46", + "region": "NALGONDA", + "status": "Active", + "vacancy": "2313.54", + "warehouse": "KHAMMAM-II OWN", + "wh_type": "OWN" + } + }, + { + "type": "Feature", + "geometry": { "type": "Point", "coordinates": [79.9457505, 16.9830439] }, + "properties": { + "capacity": "26500.0", + "district": "SURYAPET", + "latitude": "16.9830439", + "longitude": "79.9457505", + "occupancy": "56544.41", + "region": "NALGONDA", + "status": "Active", + "vacancy": "-30044.41", + "warehouse": "KODAD OWN", + "wh_type": "OWN" + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [80.6268715, 17.568000199999997] + }, + "properties": { + "capacity": "8300.0", + "district": "BHADRADRI KOTHAGUDEM", + "latitude": "17.568000199999997", + "longitude": "80.6268715", + "occupancy": "7040.51", + "region": "NALGONDA", + "status": "Active", + "vacancy": "1259.49", + "warehouse": "KOTHAGUDEM OWN", + "wh_type": "OWN" + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [78.13324200000001, 18.113212] + }, + "properties": { + "capacity": "70000.0", + "district": "KAMAREDDY", + "latitude": "18.113212", + "longitude": "78.13324200000001", + "occupancy": "9058.32", + "region": "NALGONDA", + "status": "Active", + "vacancy": "60941.68", + "warehouse": "NAGIREDDYPALLY IG", + "wh_type": "INVESTOR GODOWN" + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [79.26370899999999, 17.083461] + }, + "properties": { + "capacity": "16000.0", + "district": "NALGONDA", + "latitude": "17.083461", + "longitude": "79.26370899999999", + "occupancy": "23193.13", + "region": "NALGONDA", + "status": "Active", + "vacancy": "-7193.13", + "warehouse": "NALGONDA OWN", + "wh_type": "OWN" + } + }, + { + "type": "Feature", + "geometry": { "type": "Point", "coordinates": [79.4039925, 18.1820487] }, + "properties": { + "capacity": "12500.0", + "district": "SURYAPET", + "latitude": "18.1820487", + "longitude": "79.4039925", + "occupancy": "18721.58", + "region": "NALGONDA", + "status": "Active", + "vacancy": "-6221.58", + "warehouse": "NEREDUCHERLA OWN", + "wh_type": "OWN" + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [80.7074637, 17.577259100000003] + }, + "properties": { + "capacity": "750.0", + "district": "BHADRADRI KOTHAGUDEM", + "latitude": "17.577259100000003", + "longitude": "80.7074637", + "occupancy": "3781.84", + "region": "NALGONDA", + "status": "Active", + "vacancy": "-3031.84", + "warehouse": "PALVANCHA OWN", + "wh_type": "OWN" + } + }, + { + "type": "Feature", + "geometry": { "type": "Point", "coordinates": [79.5364287, 16.8486107] }, + "properties": { + "capacity": "20500.0", + "district": "NALGONDA", + "latitude": "16.8486107", + "longitude": "79.5364287", + "occupancy": "28255.97", + "region": "NALGONDA", + "status": "Active", + "vacancy": "-7755.97", + "warehouse": "V.T.PALEM OWN", + "wh_type": "OWN" + } + }, + { + "type": "Feature", + "geometry": { "type": "Point", "coordinates": [78.184161, 16.936219] }, + "properties": { + "capacity": "5000.0", + "district": "No Data", + "latitude": "16.936219", + "longitude": "78.184161", + "occupancy": "", + "region": "HYDERABAD", + "status": "Active", + "vacancy": "5000.0", + "warehouse": "AMC BALNAGAR", + "wh_type": "AMC" + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [78.19254000000001, 17.676299] + }, + "properties": { + "capacity": "2500.0", + "district": "MEDAK", + "latitude": "17.676299", + "longitude": "78.19254000000001", + "occupancy": "", + "region": "HYDERABAD", + "status": "Active", + "vacancy": "2500.0", + "warehouse": "AMC CHANDAPUR", + "wh_type": "AMC" + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [78.45525699999999, 17.979648] + }, + "properties": { + "capacity": "2500.0", + "district": "MEDAK", + "latitude": "17.979648", + "longitude": "78.45525699999999", + "occupancy": "2887.3", + "region": "HYDERABAD", + "status": "Active", + "vacancy": "-387.3", + "warehouse": "CHEGUNTA AMC", + "wh_type": "AMC" + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [78.31978000000001, 17.310470000000002] + }, + "properties": { + "capacity": "3000.0", + "district": "RANGA REDDY", + "latitude": "17.310470000000002", + "longitude": "78.31978000000001", + "occupancy": "", + "region": "HYDERABAD", + "status": "Active", + "vacancy": "3000.0", + "warehouse": "AMC CHEVELLA", + "wh_type": "AMC" + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [78.41449899999999, 17.984237] + }, + "properties": { + "capacity": "2500.0", + "district": "MEDAK", + "latitude": "17.984237", + "longitude": "78.41449899999999", + "occupancy": "2525.13", + "region": "HYDERABAD", + "status": "Active", + "vacancy": "-25.13", + "warehouse": "CHINNASHANKARAMPET AMC", + "wh_type": "AMC" + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [78.56270500000001, 17.989275] + }, + "properties": { + "capacity": "2500.0", + "district": "SIDDIPET", + "latitude": "17.989275", + "longitude": "78.56270500000001", + "occupancy": "1724.59", + "region": "HYDERABAD", + "status": "Active", + "vacancy": "775.41", + "warehouse": "DOULTHABAD AMC", + "wh_type": "AMC" + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [78.674162, 18.180827999999998] + }, + "properties": { + "capacity": "5000.0", + "district": "SIDDIPET", + "latitude": "18.180827999999998", + "longitude": "78.674162", + "occupancy": "5013.17", + "region": "HYDERABAD", + "status": "Active", + "vacancy": "-13.17", + "warehouse": "DUBBAK AMC", + "wh_type": "AMC" + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [80.13388499999999, 18.194315] + }, + "properties": { + "capacity": "24000.0", + "district": "JAYASHANKAR BHUPALPALLY", + "latitude": "18.194315", + "longitude": "80.13388499999999", + "occupancy": "6648.59", + "region": "HYDERABAD", + "status": "Active", + "vacancy": "17351.41", + "warehouse": "GOVINDARAOPET AMC", + "wh_type": "AMC" + } + }, + { + "type": "Feature", + "geometry": { "type": "Point", "coordinates": [77.604752, 17.635023] }, + "properties": { + "capacity": "5000.0", + "district": "MEDAK", + "latitude": "17.635023", + "longitude": "77.604752", + "occupancy": "4203.52", + "region": "HYDERABAD", + "status": "Active", + "vacancy": "796.48", + "warehouse": "HOTHI (K) AMC", + "wh_type": "AMC" + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [79.216492, 18.128251000000002] + }, + "properties": { + "capacity": "5000.0", + "district": "SIDDIPET", + "latitude": "18.128251000000002", + "longitude": "79.216492", + "occupancy": "", + "region": "HYDERABAD", + "status": "Active", + "vacancy": "5000.0", + "warehouse": "AMC HUSNABAD", + "wh_type": "AMC" + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [78.822092, 17.796245000000003] + }, + "properties": { + "capacity": "10000.0", + "district": "SIDDIPET", + "latitude": "17.796245000000003", + "longitude": "78.822092", + "occupancy": "", + "region": "HYDERABAD", + "status": "Active", + "vacancy": "10000.0", + "warehouse": "AMC JAGDEVPUR", + "wh_type": "AMC" + } + }, + { + "type": "Feature", + "geometry": { "type": "Point", "coordinates": [78.205066, 17.898006] }, + "properties": { + "capacity": "5000.0", + "district": "MEDAK", + "latitude": "17.898006", + "longitude": "78.205066", + "occupancy": "2751.06", + "region": "HYDERABAD", + "status": "Active", + "vacancy": "2248.94", + "warehouse": "KOWDIPALLY AMC", + "wh_type": "AMC" + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [78.469725, 17.899604999999998] + }, + "properties": { + "capacity": "5000.0", + "district": "MEDAK", + "latitude": "17.899604999999998", + "longitude": "78.469725", + "occupancy": "4439.48", + "region": "HYDERABAD", + "status": "Active", + "vacancy": "560.52", + "warehouse": "MASAIPET AMC", + "wh_type": "AMC" + } + }, + { + "type": "Feature", + "geometry": { "type": "Point", "coordinates": [78.257074, 18.039018] }, + "properties": { + "capacity": "2500.0", + "district": "MEDAK", + "latitude": "18.039018", + "longitude": "78.257074", + "occupancy": "3974.0", + "region": "HYDERABAD", + "status": "Active", + "vacancy": "-1474.0", + "warehouse": "MEDAK AMC", + "wh_type": "AMC" + } + }, + { + "type": "Feature", + "geometry": { "type": "Point", "coordinates": [78.249443, 17.826379] }, + "properties": { + "capacity": "5000.0", + "district": "MEDAK", + "latitude": "17.826379", + "longitude": "78.249443", + "occupancy": "10912.11", + "region": "HYDERABAD", + "status": "Active", + "vacancy": "-5912.11", + "warehouse": "MUTRAJPALLY AMC", + "wh_type": "AMC" + } + }, + { + "type": "Feature", + "geometry": { "type": "Point", "coordinates": [78.288362, 17.47495] }, + "properties": { + "capacity": "5000.0", + "district": "MEDAK", + "latitude": "17.47495", + "longitude": "78.288362", + "occupancy": "393.3", + "region": "HYDERABAD", + "status": "Active", + "vacancy": "4606.7", + "warehouse": "NARSAPUR AMC", + "wh_type": "AMC" + } + }, + { + "type": "Feature", + "geometry": { "type": "Point", "coordinates": [78.072989, 18.026798] }, + "properties": { + "capacity": "2500.0", + "district": "MEDAK", + "latitude": "18.026798", + "longitude": "78.072989", + "occupancy": "5338.48", + "region": "HYDERABAD", + "status": "Active", + "vacancy": "-2838.48", + "warehouse": "PAPANNAPET AMC", + "wh_type": "AMC" + } + }, + { + "type": "Feature", + "geometry": { "type": "Point", "coordinates": [79.684267, 18.32695] }, + "properties": { + "capacity": "5000.0", + "district": "WARANGAL(R)", + "latitude": "18.32695", + "longitude": "79.684267", + "occupancy": "4802.69", + "region": "HYDERABAD", + "status": "Active", + "vacancy": "197.31", + "warehouse": "PARKAL AMC", + "wh_type": "AMC" + } + }, + { + "type": "Feature", + "geometry": { "type": "Point", "coordinates": [77.918786, 18.0444] }, + "properties": { + "capacity": "5000.0", + "district": "MEDAK", + "latitude": "18.0444", + "longitude": "77.918786", + "occupancy": "3670.04", + "region": "HYDERABAD", + "status": "Active", + "vacancy": "1329.96", + "warehouse": "PEDDASHANKARAMPET AMC", + "wh_type": "AMC" + } + }, + { + "type": "Feature", + "geometry": { "type": "Point", "coordinates": [78.433336, 18.10531] }, + "properties": { + "capacity": "7500.0", + "district": "MEDAK", + "latitude": "18.10531", + "longitude": "78.433336", + "occupancy": "10302.76", + "region": "HYDERABAD", + "status": "Active", + "vacancy": "-2802.76", + "warehouse": "RAMAYAMPET AMC", + "wh_type": "AMC" + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [79.77414499999999, 18.223585999999997] + }, + "properties": { + "capacity": "5000.0", + "district": "JAYASHANKAR BHUPALPALLY", + "latitude": "18.223585999999997", + "longitude": "79.77414499999999", + "occupancy": "3174.62", + "region": "HYDERABAD", + "status": "Active", + "vacancy": "1825.38", + "warehouse": "REGONDA AMC", + "wh_type": "AMC" + } + }, + { + "type": "Feature", + "geometry": { "type": "Point", "coordinates": [77.954412, 17.626319] }, + "properties": { + "capacity": "10000.0", + "district": "SANGAREDDY", + "latitude": "17.626319", + "longitude": "77.954412", + "occupancy": "2052.8", + "region": "HYDERABAD", + "status": "Active", + "vacancy": "7947.2", + "warehouse": "SADASHIVPET AMC", + "wh_type": "AMC" + } + }, + { + "type": "Feature", + "geometry": { "type": "Point", "coordinates": [78.200179, 17.041282] }, + "properties": { + "capacity": "5000.0", + "district": "RANGA REDDY", + "latitude": "17.041282", + "longitude": "78.200179", + "occupancy": "3387.11", + "region": "HYDERABAD", + "status": "Active", + "vacancy": "1612.89", + "warehouse": "SHADNAGAR AMC", + "wh_type": "AMC" + } + }, + { + "type": "Feature", + "geometry": { "type": "Point", "coordinates": [78.359234, 17.772694] }, + "properties": { + "capacity": "5000.0", + "district": "MEDAK", + "latitude": "17.772694", + "longitude": "78.359234", + "occupancy": "", + "region": "HYDERABAD", + "status": "Active", + "vacancy": "5000.0", + "warehouse": "AMC SHIVAMPET", + "wh_type": "AMC" + } + }, + { + "type": "Feature", + "geometry": { "type": "Point", "coordinates": [78.870602, 18.122784] }, + "properties": { + "capacity": "5000.0", + "district": "SIDDIPET", + "latitude": "18.122784", + "longitude": "78.870602", + "occupancy": "5247.33", + "region": "HYDERABAD", + "status": "Active", + "vacancy": "-247.33", + "warehouse": "SIDDIPET AMC", + "wh_type": "AMC" + } + }, + { + "type": "Feature", + "geometry": { "type": "Point", "coordinates": [77.62565, 17.265004] }, + "properties": { + "capacity": "5000.0", + "district": "VIKARABAD", + "latitude": "17.265004", + "longitude": "77.62565", + "occupancy": "", + "region": "HYDERABAD", + "status": "Active", + "vacancy": "5000.0", + "warehouse": "AMC TANDUR", + "wh_type": "AMC" + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [78.468593, 17.783410999999997] + }, + "properties": { + "capacity": "5000.0", + "district": "MEDAK", + "latitude": "17.783410999999997", + "longitude": "78.468593", + "occupancy": "", + "region": "HYDERABAD", + "status": "Active", + "vacancy": "5000.0", + "warehouse": "AMC TOOPRAN", + "wh_type": "AMC" + } + }, + { + "type": "Feature", + "geometry": { "type": "Point", "coordinates": [77.831546, 17.96876] }, + "properties": { + "capacity": "5000.0", + "district": "SANGAREDDY", + "latitude": "17.96876", + "longitude": "77.831546", + "occupancy": "4410.27", + "region": "HYDERABAD", + "status": "Active", + "vacancy": "589.73", + "warehouse": "VATTPALLY AMC", + "wh_type": "AMC" + } + }, + { + "type": "Feature", + "geometry": { "type": "Point", "coordinates": [79.491304, 17.797545] }, + "properties": { + "capacity": "5000.0", + "district": "JANGAON", + "latitude": "17.797545", + "longitude": "79.491304", + "occupancy": "3707.22", + "region": "HYDERABAD", + "status": "Active", + "vacancy": "1292.78", + "warehouse": "ZAFFARGADH AMC", + "wh_type": "AMC" + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [78.82323740000001, 18.211443799999998] + }, + "properties": { + "capacity": "5000.0", + "district": "SIDDIPET", + "latitude": "18.211443799999998", + "longitude": "78.82323740000001", + "occupancy": "5596.59", + "region": "HYDERABAD", + "status": "Active", + "vacancy": "-596.59", + "warehouse": "GURRALAGONDI OWN", + "wh_type": "OWN" + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [78.143928527832, 16.74635124206543] + }, + "properties": { + "capacity": "11500.0", + "district": "MAHABOOBNAGAR", + "latitude": "16.74635124206543", + "longitude": "78.143928527832", + "occupancy": "10067.99", + "region": "HYDERABAD", + "status": "Active", + "vacancy": "1432.01", + "warehouse": "JADCHERLA OWN", + "wh_type": "OWN" + } + }, + { + "type": "Feature", + "geometry": { "type": "Point", "coordinates": [78.4183459, 17.4356884] }, + "properties": { + "capacity": "4000.0", + "district": "HYDERABAD", + "latitude": "17.4356884", + "longitude": "78.4183459", + "occupancy": "", + "region": "HYDERABAD", + "status": "Active", + "vacancy": "4000.0", + "warehouse": "MUSHEERABAD OWN", + "wh_type": "OWN" + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [78.11955999999999, 17.546176000000003] + }, + "properties": { + "capacity": "5000.0", + "district": "SANGAREDDY", + "latitude": "17.546176000000003", + "longitude": "78.11955999999999", + "occupancy": "", + "region": "HYDERABAD", + "status": "Active", + "vacancy": "5000.0", + "warehouse": "SANGAREDDY", + "wh_type": "AMC" + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [78.2070571, 17.080584899999998] + }, + "properties": { + "capacity": "1000.0", + "district": "RANGA REDDY", + "latitude": "17.080584899999998", + "longitude": "78.2070571", + "occupancy": "", + "region": "HYDERABAD", + "status": "Active", + "vacancy": "1000.0", + "warehouse": "SHADNAGAR OWN", + "wh_type": "OWN" + } + }, + { + "type": "Feature", + "geometry": { "type": "Point", "coordinates": [79.6321473, 17.9960472] }, + "properties": { + "capacity": "12500.0", + "district": "WARANGAL(U)", + "latitude": "17.9960472", + "longitude": "79.6321473", + "occupancy": "11557.93", + "region": "HYDERABAD", + "status": "Active", + "vacancy": "942.07", + "warehouse": "WARANGAL OWN", + "wh_type": "OWN" + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [77.70736600000001, 17.785857999999998] + }, + "properties": { + "capacity": "10000.0", + "district": "SANGAREDDY", + "latitude": "17.785857999999998", + "longitude": "77.70736600000001", + "occupancy": "6113.84", + "region": "HYDERABAD", + "status": "Active", + "vacancy": "3886.16", + "warehouse": "ZAHEERABAD IG", + "wh_type": "INVESTOR GODOWN" + } + }, + { + "type": "Feature", + "geometry": { "type": "Point", "coordinates": [77.725039, 18.410409] }, + "properties": { + "capacity": "5000.0", + "district": "KAMAREDDY", + "latitude": "18.410409", + "longitude": "77.725039", + "occupancy": "916.16", + "region": "HYDERABAD", + "status": "Active", + "vacancy": "4083.84", + "warehouse": "BICHKUNDA AMC", + "wh_type": "AMC" + } + }, + { + "type": "Feature", + "geometry": { "type": "Point", "coordinates": [77.597875, 18.351347] }, + "properties": { + "capacity": "5000.0", + "district": "KAMAREDDY", + "latitude": "18.351347", + "longitude": "77.597875", + "occupancy": "1700.4", + "region": "HYDERABAD", + "status": "Active", + "vacancy": "3299.6", + "warehouse": "JUKKAL AMC", + "wh_type": "AMC" + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [78.000489, 18.761763000000002] + }, + "properties": { + "capacity": "5000.0", + "district": "NIZAMABAD", + "latitude": "18.761763000000002", + "longitude": "78.000489", + "occupancy": "2775.78", + "region": "KARIMNAGAR", + "status": "Active", + "vacancy": "2224.22", + "warehouse": "NAVIPET AMC", + "wh_type": "AMC" + } + }, + { + "type": "Feature", + "geometry": { "type": "Point", "coordinates": [78.945073, 18.228899] }, + "properties": { + "capacity": "5000.0", + "district": "KAMAREDDY", + "latitude": "18.228899", + "longitude": "78.945073", + "occupancy": "4512.17", + "region": "HYDERABAD", + "status": "Active", + "vacancy": "487.83", + "warehouse": "NIZAMSAGAR AMC", + "wh_type": "AMC" + } + }, + { + "type": "Feature", + "geometry": { "type": "Point", "coordinates": [78.772981, 19.71702] }, + "properties": { + "capacity": "5000.0", + "district": "ADILABAD", + "latitude": "19.71702", + "longitude": "78.772981", + "occupancy": "", + "region": "KARIMNAGAR", + "status": "Active", + "vacancy": "5000.0", + "warehouse": "AMC BELA", + "wh_type": "AMC" + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [78.64269499999999, 19.727541] + }, + "properties": { + "capacity": "2500.0", + "district": "ADILABAD", + "latitude": "19.727541", + "longitude": "78.64269499999999", + "occupancy": "1707.97", + "region": "KARIMNAGAR", + "status": "Active", + "vacancy": "792.03", + "warehouse": "JAINATH AMC", + "wh_type": "AMC" + } + }, + { + "type": "Feature", + "geometry": { "type": "Point", "coordinates": [78.826036, 18.202884] }, + "properties": { + "capacity": "5000.0", + "district": "SIDDIPET", + "latitude": "18.202884", + "longitude": "78.826036", + "occupancy": "", + "region": "HYDERABAD", + "status": "Active", + "vacancy": "5000.0", + "warehouse": "AMC GURRALAGONDI", + "wh_type": "AMC" + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [79.028195, 18.074354999999997] + }, + "properties": { + "capacity": "5000.0", + "district": "SIDDIPET", + "latitude": "18.074354999999997", + "longitude": "79.028195", + "occupancy": "", + "region": "HYDERABAD", + "status": "Active", + "vacancy": "5000.0", + "warehouse": "SIDDANNAPET AMC", + "wh_type": "AMC" + } + }, + { + "type": "Feature", + "geometry": { "type": "Point", "coordinates": [79.627862, 17.998847] }, + "properties": { + "capacity": "10000.0", + "district": "WARANGAL(U)", + "latitude": "17.998847", + "longitude": "79.627862", + "occupancy": "5921.73", + "region": "HYDERABAD", + "status": "Active", + "vacancy": "4078.27", + "warehouse": "WARANGAL AMC", + "wh_type": "AMC" + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [79.63766899999999, 17.963781] + }, + "properties": { + "capacity": "5000.0", + "district": "WARANGAL(R)", + "latitude": "17.963781", + "longitude": "79.63766899999999", + "occupancy": "", + "region": "HYDERABAD", + "status": "Active", + "vacancy": "5000.0", + "warehouse": "AMC GORREKUNTA", + "wh_type": "AMC" + } + }, + { + "type": "Feature", + "geometry": { "type": "Point", "coordinates": [79.608618, 17.979754] }, + "properties": { + "capacity": "5000.0", + "district": "WARANGAL(U)", + "latitude": "17.979754", + "longitude": "79.608618", + "occupancy": "", + "region": "HYDERABAD", + "status": "Active", + "vacancy": "5000.0", + "warehouse": "AMC HANMAKONDA", + "wh_type": "AMC" + } + }, + { + "type": "Feature", + "geometry": { "type": "Point", "coordinates": [78.402173, 19.804323] }, + "properties": { + "capacity": "30000.0", + "district": "ADILABAD", + "latitude": "19.804323", + "longitude": "78.402173", + "occupancy": "5208.16", + "region": "KARIMNAGAR", + "status": "Active", + "vacancy": "24791.84", + "warehouse": "DHANORA AMC", + "wh_type": "AMC" + } + }, + { + "type": "Feature", + "geometry": { "type": "Point", "coordinates": [78.146106, 16.753598] }, + "properties": { + "capacity": "5000.0", + "district": "MAHABOOBNAGAR", + "latitude": "16.753598", + "longitude": "78.146106", + "occupancy": "", + "region": "HYDERABAD", + "status": "Active", + "vacancy": "5000.0", + "warehouse": "AMC JADCHERLA", + "wh_type": "AMC" + } + }, + { + "type": "Feature", + "geometry": { "type": "Point", "coordinates": [77.917614, 16.377182] }, + "properties": { + "capacity": "5000.0", + "district": "WANAPARTHY", + "latitude": "16.377182", + "longitude": "77.917614", + "occupancy": "3532.39", + "region": "HYDERABAD", + "status": "Active", + "vacancy": "1467.61", + "warehouse": "KOTHAKOTA AMC", + "wh_type": "AMC" + } + }, + { + "type": "Feature", + "geometry": { "type": "Point", "coordinates": [78.158108, 16.841273] }, + "properties": { + "capacity": "5000.0", + "district": "MEDAK", + "latitude": "16.841273", + "longitude": "78.158108", + "occupancy": "", + "region": "HYDERABAD", + "status": "Active", + "vacancy": "5000.0", + "warehouse": "AMC MUDIREDDYPALLI", + "wh_type": "AMC" + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [80.13388499999999, 18.194315] + }, + "properties": { + "capacity": "5000.0", + "district": "JAYASHANKAR BHUPALPALLY", + "latitude": "18.194315", + "longitude": "80.13388499999999", + "occupancy": "3916.97", + "region": "HYDERABAD", + "status": "Active", + "vacancy": "1083.03", + "warehouse": "MULUGU AMC", + "wh_type": "AMC" + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [78.13355899999999, 18.113275] + }, + "properties": { + "capacity": "5000.0", + "district": "KAMAREDDY", + "latitude": "18.113275", + "longitude": "78.13355899999999", + "occupancy": "5039.27", + "region": "HYDERABAD", + "status": "Active", + "vacancy": "-39.27", + "warehouse": "NAGIREDDYPET AMC", + "wh_type": "AMC" + } + }, + { + "type": "Feature", + "geometry": { "type": "Point", "coordinates": [79.727779, 17.738134] }, + "properties": { + "capacity": "5000.0", + "district": "WARANGAL(R)", + "latitude": "17.738134", + "longitude": "79.727779", + "occupancy": "", + "region": "HYDERABAD", + "status": "Active", + "vacancy": "5000.0", + "warehouse": "AMC PARVATHAGIRI", + "wh_type": "AMC" + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [77.90910600000001, 18.050625] + }, + "properties": { + "capacity": "5000.0", + "district": "MEDAK", + "latitude": "18.050625", + "longitude": "77.90910600000001", + "occupancy": "", + "region": "HYDERABAD", + "status": "Active", + "vacancy": "5000.0", + "warehouse": "AMC SHANKARAMPET", + "wh_type": "AMC" + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [79.730427, 18.117729999999998] + }, + "properties": { + "capacity": "5000.0", + "district": "WARANGAL(U)", + "latitude": "18.117729999999998", + "longitude": "79.730427", + "occupancy": "", + "region": "HYDERABAD", + "status": "Active", + "vacancy": "5000.0", + "warehouse": "AMC SHYAMAPET", + "wh_type": "AMC" + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [79.313586, 19.445498999999998] + }, + "properties": { + "capacity": "5000.0", + "district": "KOMARAM BHEEM ASIFABAD", + "latitude": "19.445498999999998", + "longitude": "79.313586", + "occupancy": "", + "region": "KARIMNAGAR", + "status": "Active", + "vacancy": "5000.0", + "warehouse": "AMC WANKIDI", + "wh_type": "AMC" + } + }, + { + "type": "Feature", + "geometry": { "type": "Point", "coordinates": [77.975306, 16.311308] }, + "properties": { + "capacity": "5000.0", + "district": "WANAPARTHY", + "latitude": "16.311308", + "longitude": "77.975306", + "occupancy": "", + "region": "HYDERABAD", + "status": "Active", + "vacancy": "5000.0", + "warehouse": "KADUKUNTLA (IG)", + "wh_type": "INVESTOR GODOWN" + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [79.19941999999999, 17.734146] + }, + "properties": { + "capacity": "5000.0", + "district": "JANGAON", + "latitude": "17.734146", + "longitude": "79.19941999999999", + "occupancy": "11646.08", + "region": "HYDERABAD", + "status": "Active", + "vacancy": "-6646.08", + "warehouse": "YESHWANTHAPUR - IG", + "wh_type": "INVESTOR GODOWN" + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [79.46346700000001, 18.428345999999998] + }, + "properties": { + "capacity": "5000.0", + "district": "PEDDAPALLY", + "latitude": "18.428345999999998", + "longitude": "79.46346700000001", + "occupancy": "4838.83", + "region": "KARIMNAGAR", + "status": "Active", + "vacancy": "161.17", + "warehouse": "POTHKAPALLY AMC", + "wh_type": "AMC" + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [79.14695, 18.444867000000002] + }, + "properties": { + "capacity": "5000.0", + "district": "KARIMNAGAR", + "latitude": "18.444867000000002", + "longitude": "79.14695", + "occupancy": "", + "region": "KARIMNAGAR", + "status": "Active", + "vacancy": "5000.0", + "warehouse": "KARIMNAGAR AMC", + "wh_type": "AMC" + } + }, + { + "type": "Feature", + "geometry": { "type": "Point", "coordinates": [79.390509, 18.208669] }, + "properties": { + "capacity": "15000.0", + "district": "KARIMNAGAR", + "latitude": "18.208669", + "longitude": "79.390509", + "occupancy": "", + "region": "KARIMNAGAR", + "status": "Active", + "vacancy": "15000.0", + "warehouse": "HUZURABAD OWN", + "wh_type": "OWN" + } + }, + { + "type": "Feature", + "geometry": { "type": "Point", "coordinates": [79.265835, 17.06457] }, + "properties": { + "capacity": "5000.0", + "district": "NALGONDA", + "latitude": "17.06457", + "longitude": "79.265835", + "occupancy": "34067.43", + "region": "NALGONDA", + "status": "Active", + "vacancy": "-29067.43", + "warehouse": "THIPPARTHY IG", + "wh_type": "INVESTOR GODOWN" + } + }, + { + "type": "Feature", + "geometry": { "type": "Point", "coordinates": [80.74433, 17.111735] }, + "properties": { + "capacity": "7500.0", + "district": "BHADRADRI KOTHAGUDEM", + "latitude": "17.111735", + "longitude": "80.74433", + "occupancy": "7487.2", + "region": "NALGONDA", + "status": "Active", + "vacancy": "12.8", + "warehouse": "SATHUPALLY AMC", + "wh_type": "AMC" + } + }, + { + "type": "Feature", + "geometry": { "type": "Point", "coordinates": [80.337372, 17.145143] }, + "properties": { + "capacity": "5000.0", + "district": "BHADRADRI KOTHAGUDEM", + "latitude": "17.145143", + "longitude": "80.337372", + "occupancy": "", + "region": "NALGONDA", + "status": "Active", + "vacancy": "5000.0", + "warehouse": "TATIPUDI (IG)", + "wh_type": "INVESTOR GODOWN" + } + }, + { + "type": "Feature", + "geometry": { "type": "Point", "coordinates": [80.74465, 17.112048] }, + "properties": { + "capacity": "5000.0", + "district": "BHADRADRI KOTHAGUDEM", + "latitude": "17.112048", + "longitude": "80.74465", + "occupancy": "5825.46", + "region": "NALGONDA", + "status": "Active", + "vacancy": "-825.46", + "warehouse": "KALLURUGUDEM AMC", + "wh_type": "AMC" + } + }, + { + "type": "Feature", + "geometry": { "type": "Point", "coordinates": [79.5698626, 16.8755897] }, + "properties": { + "capacity": "2150.0", + "district": "NALGONDA", + "latitude": "16.8755897", + "longitude": "79.5698626", + "occupancy": "2238.8", + "region": "NALGONDA", + "status": "Active", + "vacancy": "-88.8", + "warehouse": "MIRYALAGUDA OWN", + "wh_type": "OWN" + } + }, + { + "type": "Feature", + "geometry": { "type": "Point", "coordinates": [79.375237, 17.84469] }, + "properties": { + "capacity": "5000.0", + "district": "JANGAON", + "latitude": "17.84469", + "longitude": "79.375237", + "occupancy": "", + "region": "HYDERABAD", + "status": "Active", + "vacancy": "5000.0", + "warehouse": "STATIONGHANPUR AMC", + "wh_type": "AMC" + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [79.0286888, 18.074641699999997] + }, + "properties": { + "capacity": "5000.0", + "district": "SIDDIPET", + "latitude": "18.074641699999997", + "longitude": "79.0286888", + "occupancy": "5307.31", + "region": "No Data", + "status": "Inactive", + "vacancy": "-307.31", + "warehouse": "SIDDANNAPET OWN", + "wh_type": "OWN" + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [79.4055233, 18.182296700000002] + }, + "properties": { + "capacity": "17300.0", + "district": "SURYAPET", + "latitude": "18.182296700000002", + "longitude": "79.4055233", + "occupancy": "22028.48", + "region": "NALGONDA", + "status": "Active", + "vacancy": "-4728.48", + "warehouse": "HUZURNAGAR OWN", + "wh_type": "OWN" + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [78.39672900000001, 18.186318] + }, + "properties": { + "capacity": "1500.0", + "district": "NIZAMABAD", + "latitude": "18.186318", + "longitude": "78.39672900000001", + "occupancy": "1420.35", + "region": "KARIMNAGAR", + "status": "Active", + "vacancy": "79.65", + "warehouse": "Bhiknoor AMC", + "wh_type": "AMC" + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [78.022571, 17.981945899999996] + }, + "properties": { + "capacity": "2500.0", + "district": "MEDAK", + "latitude": "17.981945899999996", + "longitude": "78.022571", + "occupancy": "2615.2", + "region": "HYDERABAD", + "status": "Active", + "vacancy": "-115.2", + "warehouse": "TEKMAL AMC", + "wh_type": "AMC" + } + }, + { + "type": "Feature", + "geometry": { "type": "Point", "coordinates": [77.6108, 18.2121] }, + "properties": { + "capacity": "2500.0", + "district": "SANGAREDDY", + "latitude": "18.2121", + "longitude": "77.6108", + "occupancy": "2177.8", + "region": "HYDERABAD", + "status": "Active", + "vacancy": "322.2", + "warehouse": "KANGTI AMC", + "wh_type": "AMC" + } + }, + { + "type": "Feature", + "geometry": { "type": "Point", "coordinates": [78.5151466, 17.589938] }, + "properties": { + "capacity": "18000.0", + "district": "MEDCHAL", + "latitude": "17.589938", + "longitude": "78.5151466", + "occupancy": "21902.79", + "region": "HYDERABAD", + "status": "Active", + "vacancy": "-3902.79", + "warehouse": "MEDCHAL IG-I", + "wh_type": "INVESTOR GODOWN" + } + }, + { + "type": "Feature", + "geometry": { "type": "Point", "coordinates": [78.517179, 17.574422] }, + "properties": { + "capacity": "15000.0", + "district": "MEDCHAL", + "latitude": "17.574422", + "longitude": "78.517179", + "occupancy": "4601.72", + "region": "HYDERABAD", + "status": "Active", + "vacancy": "10398.28", + "warehouse": "MEDCHAL IG-II", + "wh_type": "INVESTOR GODOWN" + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [80.1220162, 16.900216600000004] + }, + "properties": { + "capacity": "10000.0", + "district": "SURYAPET", + "latitude": "16.900216600000004", + "longitude": "80.1220162", + "occupancy": "", + "region": "NALGONDA", + "status": "Active", + "vacancy": "10000.0", + "warehouse": "JAGGAYAPETA IG", + "wh_type": "INVESTOR GODOWN" + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [77.85549300000001, 18.144612] + }, + "properties": { + "capacity": "2500.0", + "district": "SANGAREDDY", + "latitude": "18.144612", + "longitude": "77.85549300000001", + "occupancy": "2442.84", + "region": "HYDERABAD", + "status": "Active", + "vacancy": "57.16", + "warehouse": "RAPARTHY AMC", + "wh_type": "AMC" + } + }, + { + "type": "Feature", + "geometry": { "type": "Point", "coordinates": [79.6128834, 18.0372935] }, + "properties": { + "capacity": "2000.0", + "district": "WARANGAL(U)", + "latitude": "18.0372935", + "longitude": "79.6128834", + "occupancy": "2000.89", + "region": "HYDERABAD", + "status": "Active", + "vacancy": "-0.8900000000000999", + "warehouse": "VANGAPAHAD IG", + "wh_type": "INVESTOR GODOWN" + } + } + ] +} diff --git a/src/api/app/auth/auth.py b/src/api/app/auth/auth.py new file mode 100644 index 00000000..07ac9df4 --- /dev/null +++ b/src/api/app/auth/auth.py @@ -0,0 +1,11 @@ +from fastapi.security import HTTPAuthorizationCredentials, HTTPBearer +from fastapi import HTTPException, Security +from app.config.config import settings + + +def auth(auth: HTTPAuthorizationCredentials = Security(HTTPBearer())): + if auth.credentials == settings.AUTH_TOKEN: + return True + else: + raise HTTPException(status_code=401, detail='Invalid token') + \ No newline at end of file diff --git a/src/api/app/config/config.py b/src/api/app/config/config.py new file mode 100644 index 00000000..fbc44e43 --- /dev/null +++ b/src/api/app/config/config.py @@ -0,0 +1,21 @@ + +from pydantic import BaseSettings, EmailStr + + +class Settings(BaseSettings): + POSTGRES_CONNECTION_STRING:str + BASE_BLOB_PATH:str + PARAMETERS_PATH:str + DISTRICT_BOUNDARY_PATH:str + CDN_ENDPOINT:str + TEMP_FILE_PATH:str + AZURE_ACCOUNT_URL:str + CONTAINER_NAME:str + LULC_PATH:str + AUTH_TOKEN:str + WARE_HOUSE_PATH:str + CROP_FIRE_PATH:str + class Config: + env_file = './.env' + +settings = Settings() \ No newline at end of file diff --git a/src/api/db/database.py b/src/api/app/db/db.py similarity index 55% rename from src/api/db/database.py rename to src/api/app/db/db.py index a5a7ed20..099ba7d4 100644 --- a/src/api/db/database.py +++ b/src/api/app/db/db.py @@ -1,21 +1,12 @@ -import configparser from sqlalchemy import create_engine from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import sessionmaker -from sqlalchemy.pool import NullPool +from app.config.config import settings -config = configparser.ConfigParser() -config.read('config/config.ini') - - -SQLALCHEMY_DATABASE_URL = config['database']['Sqlalchemyurl'] - -engine = create_engine(SQLALCHEMY_DATABASE_URL,poolclass=NullPool) +engine = create_engine(settings.POSTGRES_CONNECTION_STRING) SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine) - Base = declarative_base() - def get_db(): db = SessionLocal() try: diff --git a/src/api/app/main.py b/src/api/app/main.py new file mode 100644 index 00000000..44864b02 --- /dev/null +++ b/src/api/app/main.py @@ -0,0 +1,53 @@ +from fastapi import Depends, FastAPI +from fastapi.middleware.cors import CORSMiddleware +from fastapi.staticfiles import StaticFiles +from app.routes.index import( + regionRouter, + categoryRouter, + layerRouter, + vectorRouter, + trendRouter, + customshapeRouter, + customdistrictRouter, + layerdetailsRouter, + rasterRouter, + currentlayerRouter, + usecaseRouter, + downloadRoute, + lulcRoute, + warehouseRouter, + cropfireRouter, + pixelRouter +) + +app = FastAPI() +app.mount("/static", StaticFiles(directory="static"), name="static") +origins = ["*"] + + +app.add_middleware( + CORSMiddleware, + allow_origins=origins, + allow_credentials=True, + allow_methods=["*"], + allow_headers=["*"], +) +@app.get("/") +def root(): + return {"message": "Dicra V2 helth status is ok"} +app.include_router(regionRouter, tags=['Regions'], prefix='/api/v2') +app.include_router(categoryRouter, tags=['Categories'], prefix='/api/v2') +app.include_router(layerRouter, tags=['Layers'], prefix='/api/v2') +app.include_router(vectorRouter, tags=['Vector'], prefix='/api/v2') +app.include_router(trendRouter, tags=['Trend'], prefix='/api/v2') +app.include_router(customshapeRouter, tags=['Custom shape'], prefix='/api/v2') +app.include_router(customdistrictRouter, tags=['District Name'], prefix='/api/v2') +app.include_router(layerdetailsRouter, tags=['Layer meta'], prefix='/api/v2') +app.include_router(rasterRouter, tags=['Raster'], prefix='/api/v2') +app.include_router(currentlayerRouter, tags=['Current'], prefix='/api/v2') +app.include_router(usecaseRouter, tags=['Usecases'], prefix='/api/v2') +app.include_router(downloadRoute, tags=['Downloads'], prefix='/api/v2') +app.include_router(lulcRoute, tags=['LULC'], prefix='/api/v2') +app.include_router(warehouseRouter, tags=['Warehouse'], prefix='/api/v2') +app.include_router(cropfireRouter, tags=['Cropfire'], prefix='/api/v2') +app.include_router(pixelRouter, tags=['Pixel'], prefix='/api/v2') diff --git a/src/api/app/models/category.py b/src/api/app/models/category.py new file mode 100644 index 00000000..8d2b5eee --- /dev/null +++ b/src/api/app/models/category.py @@ -0,0 +1,7 @@ +from sqlalchemy import Column, Integer, String +from app.db.db import Base + +class Category(Base): + __tablename__ = "category" + id = Column(Integer, primary_key=True, index=True) + category_name = Column(String) \ No newline at end of file diff --git a/src/api/app/models/downloadable.py b/src/api/app/models/downloadable.py new file mode 100644 index 00000000..c4b39a7c --- /dev/null +++ b/src/api/app/models/downloadable.py @@ -0,0 +1,9 @@ +from sqlalchemy import Integer, String,Text,Boolean,DateTime,Date,ForeignKey +from sqlalchemy.sql.schema import Column +from app.db.db import Base + +class Downloadables(Base): + __tablename__ = 'tbl_downloadables' + id = Column(Integer, primary_key=True) + layer_id = Column(Integer, ForeignKey('layers.id'), nullable=False) + filename_on_blob=Column(String(255)) \ No newline at end of file diff --git a/src/api/models/downloads.py b/src/api/app/models/downloads.py similarity index 63% rename from src/api/models/downloads.py rename to src/api/app/models/downloads.py index aba3f7ab..ed236e4d 100644 --- a/src/api/models/downloads.py +++ b/src/api/app/models/downloads.py @@ -1,15 +1,14 @@ -from sqlalchemy import Integer, String,Text,Boolean,DateTime,Date +from sqlalchemy import Integer, String,Text,Boolean,DateTime,Date,ForeignKey from sqlalchemy.sql.schema import Column -from db.database import Base +from app.db.db import Base -class Downloads(Base): +class Download(Base): __tablename__ = 'tbl_downloads' id = Column(Integer, primary_key=True) - layername = Column(String(255)) - type = Column(String(255)) - parameterdate = Column(Date) - region = Column(String(255)) + layer_id = Column(Integer, ForeignKey('layers.id'), nullable=False) name = Column(String(255)) + file_name = Column(String(255)) email = Column(String(255)) usage_type = Column(String(255)) purpose = Column(String(255)) + diff --git a/src/api/app/models/index.py b/src/api/app/models/index.py new file mode 100644 index 00000000..21ce9982 --- /dev/null +++ b/src/api/app/models/index.py @@ -0,0 +1,7 @@ +from app.models.regions import Region +from app.models.category import Category +from app.models.layers import Layer +from app.models.parameters import Parameter +from app.models.usecase import Usecase +from app.models.downloadable import Downloadables +from app.models.downloads import Download \ No newline at end of file diff --git a/src/api/app/models/layers.py b/src/api/app/models/layers.py new file mode 100644 index 00000000..d1e06fb3 --- /dev/null +++ b/src/api/app/models/layers.py @@ -0,0 +1,28 @@ +from sqlalchemy import Column, Integer, String, Boolean, Text, DateTime, ForeignKey +from sqlalchemy import Column, Integer, String +from app.db.db import Base + +class Layer(Base): + __tablename__ = 'layers' + id = Column(Integer, primary_key=True) + unit = Column(String(255)) + xaxislabel = Column(String(255)) + isavailable = Column(Boolean) + layer_name = Column(String(255)) + citation = Column(Text) + last_updated = Column(DateTime) + standards = Column(Text) + short_description = Column(Text) + raster_status = Column(Boolean) + timerangefilter = Column(Boolean) + long_description = Column(Text) + vector_status = Column(Boolean) + showcustom = Column(Boolean) + source = Column(String(255)) + multiple_files = Column(Boolean) + datafromvector = Column(Boolean) + url = Column(String(255)) + display_name = Column(String(255)) + yaxislabel = Column(String(255)) + region_id = Column(Integer, ForeignKey('regions.id'), nullable=False) + category_id = Column(Integer, ForeignKey('category.id'), nullable=False) diff --git a/src/api/app/models/parameters.py b/src/api/app/models/parameters.py new file mode 100644 index 00000000..54a448fb --- /dev/null +++ b/src/api/app/models/parameters.py @@ -0,0 +1,9 @@ +from sqlalchemy import Integer, String,Text,Boolean,DateTime,Date,ForeignKey +from sqlalchemy.sql.schema import Column +from app.db.db import Base + +class Parameter(Base): + __tablename__ = 'parameters' + id = Column(Integer, primary_key=True) + available_date= Column(Date) + layer_id = Column(Integer, ForeignKey('layers.id'), nullable=False) \ No newline at end of file diff --git a/src/api/app/models/regions.py b/src/api/app/models/regions.py new file mode 100644 index 00000000..42a37250 --- /dev/null +++ b/src/api/app/models/regions.py @@ -0,0 +1,7 @@ +from sqlalchemy import Column, Integer, String +from app.db.db import Base + +class Region(Base): + __tablename__ = "regions" + id = Column(Integer, primary_key=True, index=True) + name = Column(String) diff --git a/src/api/models/usecase.py b/src/api/app/models/usecase.py similarity index 61% rename from src/api/models/usecase.py rename to src/api/app/models/usecase.py index 64a8cd2c..d046365f 100644 --- a/src/api/models/usecase.py +++ b/src/api/app/models/usecase.py @@ -1,7 +1,6 @@ -from sqlalchemy import Integer, String,Text,Boolean -from sqlalchemy.sql.schema import Column -from db.database import Base - +import datetime +from sqlalchemy import Column, Integer, String,Text,Boolean,ForeignKey,Date +from app.db.db import Base class Usecase(Base): __tablename__ = 'tbl_usecases' @@ -15,3 +14,10 @@ class Usecase(Base): username = Column(String(255)) email_id = Column(String(255)) approved = Column(Boolean) + region_id = Column(Integer, ForeignKey('regions.id'), nullable=False) + created_date=Column(Date,default=datetime.date.today) + + + + + diff --git a/src/api/app/routes/category_route.py b/src/api/app/routes/category_route.py new file mode 100644 index 00000000..604bf73b --- /dev/null +++ b/src/api/app/routes/category_route.py @@ -0,0 +1,37 @@ +from sqlalchemy.orm import Session +from fastapi import APIRouter, Request, Response, status, Depends +from app.db.db import get_db +from app.models.index import ( + Category +) +from app.schemas.index import CreateCategory +from fastapi import HTTPException +from app.auth.auth import auth + +categoryRouter = APIRouter() + + +@categoryRouter.get('/getallcategory', status_code=200) +async def getcategory(request: Request, db: Session = Depends(get_db)): + return db.query(Category).filter().all() + +@categoryRouter.post('/createcategory', status_code=200) +async def create_category(payload:CreateCategory,request: Request,db: Session = Depends(get_db)): + category_instance=Category( + category_name=payload.name + ) + db.add(category_instance) + db.commit() + return { + "success": True, + "created_id": category_instance.id + } +@categoryRouter.delete('/deletecategory/{id}', status_code=200) +async def delete_category(id:int,request: Request,db: Session = Depends(get_db)): + category = db.query(Category).filter(Category.id == id).first() + if category: + db.delete(category) + db.commit() + return {"detail": f"Category with ID {id} deleted."} + else: + raise HTTPException(status_code=404, detail="Category not found.") \ No newline at end of file diff --git a/src/api/app/routes/cropfire_route.py b/src/api/app/routes/cropfire_route.py new file mode 100644 index 00000000..9fe6a3cb --- /dev/null +++ b/src/api/app/routes/cropfire_route.py @@ -0,0 +1,103 @@ +from fastapi import APIRouter, Depends, FastAPI +from sqlalchemy.orm import Session +from app.db.db import get_db +# from models.index import Warehouse +from app.schemas.index import GetPoint +from app.config.config import settings +import json +import numpy as np +from shapely.geometry import shape, Point +from datetime import datetime +import time + + +cropfireRouter = APIRouter() + +@cropfireRouter.get('/cropfire', status_code=200) +def get_cropfire(db:Session=Depends(get_db)): + + with open(settings.CROP_FIRE_PATH, 'r') as f: + js = json.load(f) + f.close() + + return{ + 'code':200, + 'data':js + } + +@cropfireRouter.post('/cropfiregetpoint', status_code=200) +def get_points(details:GetPoint,db: Session = Depends(get_db)): + + with open(settings.CROP_FIRE_PATH, 'r') as f: + js = json.load(f) + f.close() + + points_list = [] + js_shape=shape(details.geojson) + for feature in js['features']: + polygon = shape(feature['geometry']) + datetime_object = datetime.strptime(feature['properties']['acq_date'], '%Y-%m-%d') + start_date = datetime.strptime(details.startdate, '%Y-%m-%d') + end_date = datetime.strptime(details.enddate, '%Y-%m-%d') + if polygon.within(js_shape) and start_date.date() latest_timestamp: + latest_blob = blob + latest_timestamp = new_blob_date + + if latest_blob: + print("Latest blob name:", latest_blob.name) + + # Define the path to your raster image + raster_path = str(settings.AZURE_ACCOUNT_URL + '/' + + container_name + '/' + latest_blob.name) + + point = shapely.Point(details.longitude, details.latitude) + + pointvalue = point_query(point, raster_path) + + if (pointvalue[0] is None or math.isnan(pointvalue[0])): + pixel = None + else: + pixel = round(pointvalue[0], 2) + + print("Pixel value:", pixel) + + return ({ + "code": 200, + "pixelvalue": pixel + }) + else: + print("No blobs found in the container.") + return ({ + "code": 400, + "message": "No blob found" + }) diff --git a/src/api/app/routes/raster_route.py b/src/api/app/routes/raster_route.py new file mode 100644 index 00000000..1d1dbac4 --- /dev/null +++ b/src/api/app/routes/raster_route.py @@ -0,0 +1,16 @@ +from sqlalchemy.orm import Session +from fastapi import APIRouter, Request, Response, status, Depends +from app.db.db import get_db +from app.models.index import Layer +from app.config.config import settings + +rasterRouter = APIRouter() + +@rasterRouter.get('/getrastorurl', status_code=200) +async def get_raster_tile(layerid:int,request: Request,db: Session = Depends(get_db)): + tile_name=str(layerid)+"/RASTER_TILE/raster_tile.tif" + rastrerTileurl=settings.CDN_ENDPOINT+tile_name + return({ + "code":200, + "rasterlayerUrl":rastrerTileurl + }) \ No newline at end of file diff --git a/src/api/app/routes/region_route.py b/src/api/app/routes/region_route.py new file mode 100644 index 00000000..d9286254 --- /dev/null +++ b/src/api/app/routes/region_route.py @@ -0,0 +1,27 @@ +from sqlalchemy.orm import Session +from fastapi import APIRouter, Request, Response, status, Depends +from app.db.db import get_db +from app.models.index import Region +from app.schemas.index import CreateRegion +from app.auth.auth import auth + +regionRouter = APIRouter() + +@regionRouter.get('/getallregion', status_code=200) +async def get_region(request: Request,db: Session = Depends(get_db)): + return db.query(Region).filter().all() +@regionRouter.post('/createregion', status_code=201) +async def create_region(payload:CreateRegion,request: Request,db: Session = Depends(get_db)): + region_instance=Region( + name=payload.name + ) + db.add(region_instance) + db.commit() + return { + "success": True, + "created_id": region_instance.id + } + + + + diff --git a/src/api/app/routes/trend_route.py b/src/api/app/routes/trend_route.py new file mode 100644 index 00000000..fbda0c9d --- /dev/null +++ b/src/api/app/routes/trend_route.py @@ -0,0 +1,104 @@ +import time +import math +from sqlalchemy import and_ +from app.db.db import get_db +from datetime import datetime +from shapely.geometry import shape +from app.models.index import Layer +from sqlalchemy.orm import Session +from app.config.config import settings +from app.schemas.index import Gettrend, Getpointtrend +from app.models.index import Parameter +from fastapi import APIRouter, Request, Response, status, Depends +from app.utils.util import getcentroid,toUnix,checknodata +import shapely + +from rasterstats import zonal_stats, point_query + +PARAMETER_PATH=settings.PARAMETERS_PATH +trendRouter = APIRouter() +@trendRouter.post('/gettrend', status_code=200) +async def get_trend(details:Gettrend,db:Session=Depends(get_db)) -> dict: + format="%Y-%m-%d" + try: + datetime.strptime(details.startdate, format) + datetime.strptime(details.enddate, format) + except ValueError: + return { + "message":"start date and end date in should be YYYY-MM-DD" + } + availabledates=db.query(Parameter.available_date).filter( + and_(Parameter.layer_id==details.layer_id,Parameter.available_date.between( + str(details.startdate),str(details.enddate) + ))).order_by(Parameter.available_date).all() + db.close() + if(len(availabledates)<1): + return { + 'code':404, + 'message':"No data available for the given date range" + } + else: + zstats=[] + for i in availabledates: + try: + filedate = datetime.strptime(str(i.available_date), '%Y-%m-%d').strftime('%d-%m-%Y') + file_path=PARAMETER_PATH+str(details.layer_id)+'/RASTER/'+str(filedate)+'.tif' + stats = zonal_stats(details.geojson, + file_path, + stats=['mean','count','sum']) + # if(details.layer_id==42 and details.layer_id==73 and details.layer_id==74 and details.layer_id==75): + if details.layer_id in [42, 73, 74, 75, 101, 102, 103]: #put population layer id here + zstats.append([toUnix(filedate),round(stats[0]['sum'],2)]) + elif(stats[0]['count']==0): + pointvalue=point_query(getcentroid(details.geojson),file_path) + if(pointvalue[0] is None or math.isnan(pointvalue[0])): + zstats.append([toUnix(filedate),None]) + else: + zstats.append([toUnix(filedate),round(pointvalue[0],2)]) + else: + zstats.append(checknodata(toUnix(filedate),stats[0]['mean'])) + except Exception as e: + continue + return { + 'code':200, + 'trend':zstats + } + +@trendRouter.post('/getppointtrend', status_code=200) +async def get_point_trend(details:Getpointtrend,db:Session=Depends(get_db)) -> dict: + format="%Y-%m-%d" + try: + datetime.strptime(details.startdate, format) + datetime.strptime(details.enddate, format) + except ValueError: + return { + "message":"start date and end date in should be YYYY-MM-DD" + } + availabledates=db.query(Parameter.available_date).filter( + and_(Parameter.layer_id==details.layer_id,Parameter.available_date.between( + str(details.startdate),str(details.enddate) + ))).order_by(Parameter.available_date).all() + db.close() + if(len(availabledates)<1): + return { + 'code':404, + 'message':"No data available for the given date range" + } + else: + zstats=[] + for i in availabledates: + filedate = datetime.strptime(str(i.available_date), '%Y-%m-%d').strftime('%d-%m-%Y') + file_path=PARAMETER_PATH+str(details.layer_id)+'/RASTER/'+str(filedate)+'.tif' + + point = shapely.Point(details.longitude, details.latitude) + + pointvalue=point_query(point,file_path) + if(pointvalue[0] is None or math.isnan(pointvalue[0])): + zstats.append([toUnix(filedate),None]) + else: + zstats.append([toUnix(filedate),round(pointvalue[0],2)]) + + return { + 'code':200, + 'trend':zstats + } \ No newline at end of file diff --git a/src/api/app/routes/usecase.py b/src/api/app/routes/usecase.py new file mode 100644 index 00000000..54725b1b --- /dev/null +++ b/src/api/app/routes/usecase.py @@ -0,0 +1,70 @@ +import uuid +from sqlalchemy.orm import Session +from fastapi import APIRouter, Request, Response, status, Depends,Form,UploadFile,File,HTTPException +from app.db.db import get_db +import datetime +from app.models.index import Region +from app.schemas.index import CreateRegion +from app.models.usecase import Usecase +from app.schemas.index import OutputUsecase + +from fastapi_pagination import LimitOffsetPage, Page, add_pagination,paginate + +usecaseRouter = APIRouter() + + +@usecaseRouter.post('/createusecase', status_code=201) +async def create_usecase( + project_name: str = Form(...), + project_type: str = Form(...), + short_description: str = Form(...), + long_description: str = Form(...), + url: str = Form(...), + image: UploadFile = File(...), + username: str = Form(...), + email_id: str = Form(...), + region_id: int = Form(...), + db: Session = Depends(get_db)): + ext = image.filename.split(".")[-1] + random_name = str(uuid.uuid4()) + file_name_to_store=f"{random_name}.{ext}" + to_create = Usecase( + project_name=project_name, + project_type=project_type, + short_description=short_description, + long_description=long_description, + url=url, + image=file_name_to_store, + username=username, + email_id=email_id, + approved=False, + region_id=region_id + ) + db.add(to_create) + db.commit() + file_location = f"./static/{file_name_to_store}" + with open(file_location, "wb+") as file_object: + file_object.write(image.file.read()) + file_object.close() + return { + "success": True, + "created_id": to_create.id + } +# Read all usecases with pagination +@usecaseRouter.get("/usecases/{region}",response_model=Page[OutputUsecase]) +@usecaseRouter.get("/usecases/limit-offset",response_model=LimitOffsetPage[OutputUsecase]) +async def get_usecase(region:int,db: Session = Depends(get_db)): + return paginate(db.query(Usecase).filter(Usecase.approved==True,Usecase.region_id==region).all()) +add_pagination(usecaseRouter) +# Read usecases by id +@usecaseRouter.get("/getusecase/{id}") +async def get_usecase_id(id:int,db:Session=Depends(get_db)): + usecases=db.query(Usecase).filter(Usecase.id==id).first() + db.close() + if not usecases: + raise HTTPException(status.HTTP_404_NOT_FOUND, detail=f'usecase with {id} is not available') + return{ + "code":200, + "usecase":usecases + } + diff --git a/src/api/app/routes/vector_route.py b/src/api/app/routes/vector_route.py new file mode 100644 index 00000000..1bcfc43d --- /dev/null +++ b/src/api/app/routes/vector_route.py @@ -0,0 +1,25 @@ +from sqlalchemy.orm import Session +from fastapi import APIRouter, Request, Response, status, Depends +from app.db.db import get_db +from app.models.index import Layer +from app.config.config import settings + +vectorRouter = APIRouter() + +@vectorRouter.get('/getvector', status_code=200) +async def get_vector_tile(layerid:int,type:str,request: Request,db: Session = Depends(get_db)): + layer_z_x_y_format="""{z}/{x}/{y}.pbf""" + tile_name=layer_z_x_y_format + if type=='mandal': + vectortileUrl=settings.CDN_ENDPOINT+f"{str(layerid)}/vector_tile_mandal/"+tile_name + elif type=='district': + vectortileUrl=settings.CDN_ENDPOINT+f"{str(layerid)}/vector_tile_district/"+tile_name + return({ + "code":200, + "layerUrl":vectortileUrl + }) + + + + + diff --git a/src/api/app/routes/warehouse_route.py b/src/api/app/routes/warehouse_route.py new file mode 100644 index 00000000..cb6c3dfc --- /dev/null +++ b/src/api/app/routes/warehouse_route.py @@ -0,0 +1,21 @@ +from fastapi import APIRouter, Depends, FastAPI +from sqlalchemy.orm import Session +from app.db.db import get_db +# from models.index import Warehouse +from app.config.config import settings +import json + + +warehouseRouter = APIRouter() + +@warehouseRouter.get('/warehouses', status_code=200) +def get_warehouses(db:Session=Depends(get_db)): + + with open(settings.WARE_HOUSE_PATH, 'r') as f: + js = json.load(f) + f.close() + + return{ + 'code':200, + 'data':js + } diff --git a/src/api/app/schemas/category.py b/src/api/app/schemas/category.py new file mode 100644 index 00000000..434ad07b --- /dev/null +++ b/src/api/app/schemas/category.py @@ -0,0 +1,5 @@ +from pydantic import BaseModel +from pydantic.types import Json,Dict + +class CreateCategory(BaseModel): + name:str \ No newline at end of file diff --git a/src/api/schemas/point.py b/src/api/app/schemas/cropfire.py similarity index 67% rename from src/api/schemas/point.py rename to src/api/app/schemas/cropfire.py index c728c981..d9573e1e 100644 --- a/src/api/schemas/point.py +++ b/src/api/app/schemas/cropfire.py @@ -3,9 +3,5 @@ class GetPoint(BaseModel): geojson:Dict - startdate:str - enddate:str - -class GetPointDateRange(BaseModel): startdate:str enddate:str \ No newline at end of file diff --git a/src/api/schemas/customdistrict.py b/src/api/app/schemas/custom_district.py similarity index 82% rename from src/api/schemas/customdistrict.py rename to src/api/app/schemas/custom_district.py index 4a9f366b..142dc656 100644 --- a/src/api/schemas/customdistrict.py +++ b/src/api/app/schemas/custom_district.py @@ -1,9 +1,5 @@ from pydantic import BaseModel from pydantic.types import Json,Dict - - class Customdistrict(BaseModel): - geojson:Dict - - + geojson:Dict \ No newline at end of file diff --git a/src/api/schemas/custom.py b/src/api/app/schemas/custom_shape.py similarity index 87% rename from src/api/schemas/custom.py rename to src/api/app/schemas/custom_shape.py index 5b896187..f800f82f 100644 --- a/src/api/schemas/custom.py +++ b/src/api/app/schemas/custom_shape.py @@ -4,5 +4,4 @@ class Customstat(BaseModel): geojson:Dict date:str - parameter:str - + layer_id:int \ No newline at end of file diff --git a/src/api/app/schemas/downloadables.py b/src/api/app/schemas/downloadables.py new file mode 100644 index 00000000..7fa60c87 --- /dev/null +++ b/src/api/app/schemas/downloadables.py @@ -0,0 +1,6 @@ +from pydantic import BaseModel +from pydantic.types import Json,Dict + +class Downloadable(BaseModel): + layerId:int + fileName:str \ No newline at end of file diff --git a/src/api/app/schemas/index.py b/src/api/app/schemas/index.py new file mode 100644 index 00000000..4943c392 --- /dev/null +++ b/src/api/app/schemas/index.py @@ -0,0 +1,12 @@ +from app.schemas.trend import Gettrend, Getpointtrend +from app.schemas.custom_shape import Customstat +from app.schemas.custom_district import Customdistrict +from app.schemas.layer import LayerCreate, LayerBase, LayerPercentage +from app.schemas.region import CreateRegion +from app.schemas.category import CreateCategory +from app.schemas.parameter import Createparameter +from app.schemas.usecase import OutputUsecase +from app.schemas.downloadables import Downloadable +from app.schemas.lulc import Getlulc, Getlulctrend +from app.schemas.cropfire import GetPoint +from app.schemas.pixel import GetPixel diff --git a/src/api/app/schemas/layer.py b/src/api/app/schemas/layer.py new file mode 100644 index 00000000..e0390ab1 --- /dev/null +++ b/src/api/app/schemas/layer.py @@ -0,0 +1,34 @@ +from typing import Optional +from datetime import datetime +from pydantic import BaseModel +from pydantic.types import Json,Dict + +class LayerBase(BaseModel): + unit: str + xaxislabel: str + isavailable: bool + layer_name: str + citation: Optional[str] = None + last_updated: Optional[datetime] = None + standards: Optional[str] = None + short_description: Optional[str] = None + raster_status: bool + timerangefilter: bool + long_description: Optional[str] = None + vector_status: bool + showcustom: bool + source: Optional[str] = None + multiple_files: bool + datafromvector: bool + url: Optional[str] = None + display_name: str + yaxislabel: str + +class LayerCreate(LayerBase): + region_id: int + category_id: int + +class LayerPercentage(BaseModel): + geojson:Dict + layer_id:int + layer_name:str diff --git a/src/api/schemas/lulc.py b/src/api/app/schemas/lulc.py similarity index 80% rename from src/api/schemas/lulc.py rename to src/api/app/schemas/lulc.py index a8a07bff..bcaf7900 100644 --- a/src/api/schemas/lulc.py +++ b/src/api/app/schemas/lulc.py @@ -3,6 +3,8 @@ class Getlulc(BaseModel): geojson:Dict + layer_id:int + class Getlulctrend(BaseModel): geojson:Dict - parameter:int + layer_id:int diff --git a/src/api/app/schemas/parameter.py b/src/api/app/schemas/parameter.py new file mode 100644 index 00000000..5b15d297 --- /dev/null +++ b/src/api/app/schemas/parameter.py @@ -0,0 +1,7 @@ +from pydantic import BaseModel +from pydantic.types import Json,Dict +from datetime import date + +class Createparameter(BaseModel): + available_date:date + layer_id:int \ No newline at end of file diff --git a/src/api/app/schemas/pixel.py b/src/api/app/schemas/pixel.py new file mode 100644 index 00000000..3c484e4d --- /dev/null +++ b/src/api/app/schemas/pixel.py @@ -0,0 +1,8 @@ +from pydantic import BaseModel +from pydantic.types import Json,Dict + +class GetPixel(BaseModel): + latitude:str + longitude:str + layer_id:int + \ No newline at end of file diff --git a/src/api/app/schemas/region.py b/src/api/app/schemas/region.py new file mode 100644 index 00000000..98c867fb --- /dev/null +++ b/src/api/app/schemas/region.py @@ -0,0 +1,5 @@ +from pydantic import BaseModel +from pydantic.types import Json,Dict + +class CreateRegion(BaseModel): + name:str \ No newline at end of file diff --git a/src/api/schemas/trend.py b/src/api/app/schemas/trend.py similarity index 51% rename from src/api/schemas/trend.py rename to src/api/app/schemas/trend.py index 69459e05..188df7b4 100644 --- a/src/api/schemas/trend.py +++ b/src/api/app/schemas/trend.py @@ -5,5 +5,11 @@ class Gettrend(BaseModel): geojson:Dict startdate:str enddate:str - parameter:str - + layer_id:int + +class Getpointtrend(BaseModel): + latitude:str + longitude:str + startdate:str + enddate:str + layer_id:int \ No newline at end of file diff --git a/src/api/schemas/usecase.py b/src/api/app/schemas/usecase.py similarity index 53% rename from src/api/schemas/usecase.py rename to src/api/app/schemas/usecase.py index 1fef93d1..edd2b4e2 100644 --- a/src/api/schemas/usecase.py +++ b/src/api/app/schemas/usecase.py @@ -1,21 +1,5 @@ from pydantic import BaseModel - - - -class CreateUsecase(BaseModel): - project_name: str - project_type: str - short_description:str - long_description:str - url:str - image:str - username:str - email_id:str - approved:bool - - class Config: - orm_mode = True - +from datetime import date class OutputUsecase(BaseModel): id:int project_name: str @@ -27,6 +11,8 @@ class OutputUsecase(BaseModel): username:str email_id:str approved:bool + region_id:int + created_date:date class Config: orm_mode = True \ No newline at end of file diff --git a/src/api/app/utils/util.py b/src/api/app/utils/util.py new file mode 100644 index 00000000..09e1802e --- /dev/null +++ b/src/api/app/utils/util.py @@ -0,0 +1,21 @@ +from datetime import datetime +from shapely.geometry import shape +import time +def toUnix(datestring): + unixtime=time.mktime(datetime.strptime(datestring,'%d-%m-%Y').timetuple()) + return int(unixtime*1000) +def getcentroid(polygon_feature): + """ + Function for getting centroid of a polygon feature + Parameters + polygon_feature - Polygon feture object from the geojson + """ + polygon_shape=shape(polygon_feature) + centrod_of_polygon=polygon_shape.centroid + return(centrod_of_polygon) +def checknodata(filedate,val): + print(type(val)) + if val is None: + return([filedate,0]) + else: + return([filedate,round(val,2)]) \ No newline at end of file diff --git a/src/api/cmd.txt b/src/api/cmd.txt new file mode 100644 index 00000000..6d9c6593 --- /dev/null +++ b/src/api/cmd.txt @@ -0,0 +1,12 @@ +docker build -t "gdal:Dockerfile" . +docker run -p 8000:8000 "gdal:Dockerfile" + + +docker-compose exec db psql --username=root --dbname=dicra + +INSERT INTO regions (name) VALUES ('TELENGANA') + + +INSERT INTO layers (unit, xaxislabel, isavailable, layer_name, citation, last_updated, standards, short_description, raster_status, timerangefilter, long_description, vector_status, showcustom, source, multiple_files, datafromvector, url, display_name, yaxislabel, region_id, category_id) VALUES ('unit', 'Date/Time', true, 'NDVI', 'Citation', '2023-04-11 00:00:00', 'All data distributed by the LP DAAC contain no restrictions on the data reus', 'Normalized difference vegetation index', true, true, 'NDVI quantifies vegetation by measuring the difference between near-infrared (which vegetation strongly reflects) and red light (which vegetation absorbs)', true, true, 'GLAM NDVIDB', true, false, 'https://pekko.geog.umd.edu/usda/beta/', 'Normalized Difference Vegetation Index (NDVI)', 'NDVI', 1, 1); + +INSERT INTO parameters (available_date, layer_id) VALUES ('2019-02-01', 1); \ No newline at end of file diff --git a/src/api/docker-compose.yml b/src/api/docker-compose.yml new file mode 100644 index 00000000..2574de90 --- /dev/null +++ b/src/api/docker-compose.yml @@ -0,0 +1,24 @@ +version: '3.8' + +services: + db: + image: postgres:15-alpine + volumes: + - postgres_data:/var/lib/postgresql/data/ + expose: + - 5432:5432 + environment: + - POSTGRES_USER=root + - POSTGRES_PASSWORD=PASSWORD + - POSTGRES_DB=dicra + api: + build: . + command: bash -c "alembic upgrade head && uvicorn app.main:app --host 0.0.0.0 --port 8000 --reload" + ports: + - 8000:8000 + depends_on: + - db + volumes: + - "/Users/amjad/Desktop/PERSONAL/DiCRA-API:/app" +volumes: + postgres_data: diff --git a/src/api/example_calls/district.json b/src/api/example_calls/district.json new file mode 100644 index 00000000..b6194b4c --- /dev/null +++ b/src/api/example_calls/district.json @@ -0,0 +1,921 @@ +{ + "geojson": { + "type": "Polygon", + "coordinates": [ + [ + [ + 79.56249112400008, + 17.619651097000144 + ], + [ + 79.56047121800009, + 17.60609346600006 + ], + [ + 79.5547882840001, + 17.59780138700006 + ], + [ + 79.54332792200006, + 17.596823938000114 + ], + [ + 79.5365554710001, + 17.601282934000096 + ], + [ + 79.53051174800015, + 17.594402972000353 + ], + [ + 79.51293497700004, + 17.587982980000106 + ], + [ + 79.51718349800012, + 17.575939836000032 + ], + [ + 79.51440086100018, + 17.56488692200014 + ], + [ + 79.51683437400004, + 17.559427204000144 + ], + [ + 79.53420160299999, + 17.550082106000332 + ], + [ + 79.53693300500004, + 17.530192620000093 + ], + [ + 79.541052, + 17.524158415000272 + ], + [ + 79.54699312100001, + 17.522706874000164 + ], + [ + 79.55289587900006, + 17.510407177000047 + ], + [ + 79.56492846900005, + 17.497989930000188 + ], + [ + 79.577794681, + 17.505487876000075 + ], + [ + 79.59608606600005, + 17.498338055000033 + ], + [ + 79.59392093800005, + 17.510740610000028 + ], + [ + 79.58955101800007, + 17.520072587000072 + ], + [ + 79.59521728400006, + 17.526066134000075 + ], + [ + 79.59960985500004, + 17.517161944000065 + ], + [ + 79.60448212700004, + 17.498167420000073 + ], + [ + 79.61160116900004, + 17.495800992000056 + ], + [ + 79.62310798400006, + 17.49881630400006 + ], + [ + 79.62785314000001, + 17.492150666000043 + ], + [ + 79.63891206400007, + 17.485836010000185 + ], + [ + 79.65047688200008, + 17.49311537600005 + ], + [ + 79.65647628300007, + 17.49333218700002 + ], + [ + 79.65877095200005, + 17.48462603300004 + ], + [ + 79.65663674100006, + 17.473552581000035 + ], + [ + 79.66392373700006, + 17.467144248000068 + ], + [ + 79.67395562900003, + 17.463771940000072 + ], + [ + 79.68802866600004, + 17.455510484000115 + ], + [ + 79.70017199200004, + 17.455627702000072 + ], + [ + 79.69963063300008, + 17.448110692000057 + ], + [ + 79.70695183200007, + 17.447158106000074 + ], + [ + 79.72253449600004, + 17.43069262700004 + ], + [ + 79.72917956500004, + 17.428158761000077 + ], + [ + 79.743717172, + 17.428868298 + ], + [ + 79.75244046000006, + 17.43935185600003 + ], + [ + 79.76181755700003, + 17.43022266500003 + ], + [ + 79.76255683700003, + 17.40764772600005 + ], + [ + 79.78724509500006, + 17.40118525000014 + ], + [ + 79.79652225800004, + 17.393277371000124 + ], + [ + 79.79096679100007, + 17.383414645000073 + ], + [ + 79.78037322100005, + 17.380060480000054 + ], + [ + 79.77716362000007, + 17.369988112000044 + ], + [ + 79.79143282500007, + 17.35657760600003 + ], + [ + 79.79449617900008, + 17.35109007500006 + ], + [ + 79.79214706700003, + 17.337948448000077 + ], + [ + 79.79254369700004, + 17.325289373000032 + ], + [ + 79.80395955600005, + 17.321621569000058 + ], + [ + 79.81204094000003, + 17.324486420000028 + ], + [ + 79.81426685900004, + 17.331143800000063 + ], + [ + 79.831637124, + 17.335508862000097 + ], + [ + 79.84468042000003, + 17.329099961000054 + ], + [ + 79.84894081100003, + 17.334777100000053 + ], + [ + 79.86472726300008, + 17.333836767000037 + ], + [ + 79.87203952100003, + 17.330842596000025 + ], + [ + 79.88073624700007, + 17.347439193000184 + ], + [ + 79.88202400900008, + 17.35735468100006 + ], + [ + 79.89182293500005, + 17.354007806000027 + ], + [ + 79.90311899400007, + 17.37685865900005 + ], + [ + 79.91637210400006, + 17.372446110000055 + ], + [ + 79.93824087900003, + 17.375522837000062 + ], + [ + 79.94058293600006, + 17.383397375000072 + ], + [ + 79.93650146600004, + 17.39202266800004 + ], + [ + 79.969658551, + 17.399110577000158 + ], + [ + 79.97071248400005, + 17.40645341900006 + ], + [ + 79.98035205500008, + 17.405866098000047 + ], + [ + 79.99258248400008, + 17.39722865400006 + ], + [ + 79.99584365500004, + 17.372754518000022 + ], + [ + 80.00626325000007, + 17.37142226900005 + ], + [ + 80.01308751900007, + 17.367218087000026 + ], + [ + 80.02239019700005, + 17.356638435000036 + ], + [ + 80.04743381900005, + 17.352225591000035 + ], + [ + 80.05769935000006, + 17.34578428800006 + ], + [ + 80.06962991700004, + 17.353035867000074 + ], + [ + 80.07664752900007, + 17.362300040000036 + ], + [ + 80.08291688400004, + 17.364859926000065 + ], + [ + 80.10393031800004, + 17.357409338000025 + ], + [ + 80.11085699400007, + 17.358751692000055 + ], + [ + 80.12156855900008, + 17.383625478000056 + ], + [ + 80.14362845700003, + 17.394157440000072 + ], + [ + 80.15867619300008, + 17.378485753000064 + ], + [ + 80.16135284700005, + 17.39154524500003 + ], + [ + 80.15945686500004, + 17.404061498000033 + ], + [ + 80.16701250400007, + 17.40752077700006 + ], + [ + 80.16193910500004, + 17.421359121000023 + ], + [ + 80.17130219700005, + 17.44350080700002 + ], + [ + 80.17908250400006, + 17.43977741300006 + ], + [ + 80.19473051000006, + 17.43801117400011 + ], + [ + 80.20225581100004, + 17.441145462000065 + ], + [ + 80.19501777599999, + 17.46652203900004 + ], + [ + 80.20277331200003, + 17.473585761000038 + ], + [ + 80.21125960400008, + 17.47151312699998 + ], + [ + 80.21582752200004, + 17.479653282000072 + ], + [ + 80.21462992500005, + 17.49476641600006 + ], + [ + 80.20920070700004, + 17.50468492400006 + ], + [ + 80.22850494600004, + 17.53020953500004 + ], + [ + 80.20755912600004, + 17.544446613000048 + ], + [ + 80.20302028700007, + 17.556123807000063 + ], + [ + 80.20695228600005, + 17.57089813400006 + ], + [ + 80.21657112900004, + 17.588537100000053 + ], + [ + 80.22520310200008, + 17.608431030000077 + ], + [ + 80.21090270700006, + 17.611563656000044 + ], + [ + 80.20644965000008, + 17.62406119900004 + ], + [ + 80.20758777100008, + 17.650851572000022 + ], + [ + 80.22828377000008, + 17.654753206000066 + ], + [ + 80.23558219000006, + 17.65053294200004 + ], + [ + 80.24717393000003, + 17.654611767000063 + ], + [ + 80.25528922400008, + 17.663210078000077 + ], + [ + 80.26094565000005, + 17.690436302000023 + ], + [ + 80.26039104800003, + 17.706066575000023 + ], + [ + 80.25003464300005, + 17.71181015600007 + ], + [ + 80.24211194200007, + 17.73351724300005 + ], + [ + 80.24837589200007, + 17.73334552700004 + ], + [ + 80.26005920699998, + 17.75000591200012 + ], + [ + 80.25766998600005, + 17.758494918000054 + ], + [ + 80.25884346900006, + 17.77595647100003 + ], + [ + 80.25336598400008, + 17.778240483000047 + ], + [ + 80.25666319100003, + 17.789454380000052 + ], + [ + 80.25193695800004, + 17.810672247000184 + ], + [ + 80.26312500100005, + 17.819581836000054 + ], + [ + 80.26906413500006, + 17.828109824000023 + ], + [ + 80.27454641300005, + 17.846384085000068 + ], + [ + 80.27606926800007, + 17.85871921100005 + ], + [ + 80.28200840300008, + 17.865419773000042 + ], + [ + 80.28002869200003, + 17.875318331000074 + ], + [ + 80.28246526000004, + 17.904252577000022 + ], + [ + 80.26987258000008, + 17.91744861600006 + ], + [ + 80.26783344200004, + 17.925349594000068 + ], + [ + 80.27176237000003, + 17.958207722000054 + ], + [ + 80.28048554800006, + 17.956029648000026 + ], + [ + 80.30835379500007, + 17.962273354000047 + ], + [ + 80.32312548900006, + 17.976588191000076 + ], + [ + 80.31512378400004, + 17.988111771000035 + ], + [ + 80.31597996900001, + 17.99631982000011 + ], + [ + 80.29535903300001, + 18.000462338000034 + ], + [ + 80.28118538200016, + 17.997377761000166 + ], + [ + 80.27247118500009, + 18.00636288100003 + ], + [ + 80.25513121, + 18.019968743000106 + ], + [ + 80.24249248900014, + 18.014420084999983 + ], + [ + 80.23230881000012, + 18.022015718999967 + ], + [ + 80.22253939100011, + 18.02358365000015 + ], + [ + 80.21505685500011, + 18.01025202 + ], + [ + 80.20210197300003, + 18.019785711000054 + ], + [ + 80.17480650800019, + 18.035673355000085 + ], + [ + 80.15198774100014, + 18.047391569000126 + ], + [ + 80.14209722000004, + 18.054170928000133 + ], + [ + 80.11432265500014, + 18.08174851800004 + ], + [ + 80.1031591360001, + 18.080617802000063 + ], + [ + 80.09104171000007, + 18.07179735 + ], + [ + 80.07949409800011, + 18.07019176600005 + ], + [ + 80.07284663600007, + 18.080055853000033 + ], + [ + 80.05239996699999, + 18.090341983000087 + ], + [ + 80.04124404200007, + 18.106543834000092 + ], + [ + 80.03501865499999, + 18.10239663800013 + ], + [ + 80.02598636600004, + 18.089342075000047 + ], + [ + 80.01694061600006, + 18.080083595000076 + ], + [ + 80.00453702400006, + 18.058876191000024 + ], + [ + 80.00057959700007, + 18.055063320000045 + ], + [ + 79.99839090000006, + 18.03389279000004 + ], + [ + 79.99109299800006, + 18.01378821900005 + ], + [ + 79.99119294400003, + 17.98774308000003 + ], + [ + 79.98324728200004, + 17.97567488300018 + ], + [ + 79.98902188300008, + 17.970480050000162 + ], + [ + 79.98338950700008, + 17.952442365000024 + ], + [ + 79.99022106899997, + 17.945414015000154 + ], + [ + 80.00451405900003, + 17.914538007000033 + ], + [ + 79.99177287400005, + 17.90148323300008 + ], + [ + 79.99208315400006, + 17.88875068300007 + ], + [ + 79.98909394300006, + 17.88407864800007 + ], + [ + 79.98781846100007, + 17.869464996000033 + ], + [ + 79.981193701, + 17.86072033000005 + ], + [ + 79.95408810100008, + 17.864418374000024 + ], + [ + 79.95019621200004, + 17.840551231000063 + ], + [ + 79.93948111300006, + 17.841063123000026 + ], + [ + 79.93441364900008, + 17.83515488200004 + ], + [ + 79.92938452200008, + 17.821051371000067 + ], + [ + 79.93049241600005, + 17.81574359800004 + ], + [ + 79.91823819100006, + 17.802882611000086 + ], + [ + 79.90966023500005, + 17.79767159200003 + ], + [ + 79.90998091300008, + 17.813598745000036 + ], + [ + 79.89631221100007, + 17.813624942000047 + ], + [ + 79.89225760900007, + 17.809813045000055 + ], + [ + 79.87613914000008, + 17.807685807000155 + ], + [ + 79.88366916000007, + 17.785228721000067 + ], + [ + 79.88308360300005, + 17.779411896000056 + ], + [ + 79.89373796300004, + 17.770883194000078 + ], + [ + 79.90578292900005, + 17.772651765000035 + ], + [ + 79.90650908100008, + 17.762401020000027 + ], + [ + 79.90192866100006, + 17.74608784000003 + ], + [ + 79.89602836000006, + 17.736381428000072 + ], + [ + 79.88252884000008, + 17.731344229000058 + ], + [ + 79.86395694200007, + 17.736098001000016 + ], + [ + 79.85828610300007, + 17.731550157000072 + ], + [ + 79.85882474700003, + 17.7235300640001 + ], + [ + 79.84977764100006, + 17.71813230500004 + ], + [ + 79.83631228000007, + 17.71560706300005 + ], + [ + 79.821991, + 17.71020158400006 + ], + [ + 79.81797914500004, + 17.69892470700006 + ], + [ + 79.80503446500006, + 17.700588954000068 + ], + [ + 79.79444443300008, + 17.707543501000032 + ], + [ + 79.78440822099998, + 17.70693138000007 + ], + [ + 79.77060629700003, + 17.69648876900004 + ], + [ + 79.76683939100008, + 17.697913638000045 + ], + [ + 79.75268042900007, + 17.687656953000044 + ], + [ + 79.73662091600005, + 17.689884380000024 + ], + [ + 79.71763590200004, + 17.698785481000073 + ], + [ + 79.71485646900004, + 17.68503885900003 + ], + [ + 79.69972357400007, + 17.682641109000144 + ], + [ + 79.69214758800007, + 17.686146635000057 + ], + [ + 79.682793435, + 17.66979998700009 + ], + [ + 79.67878614600005, + 17.650313090000054 + ], + [ + 79.66346504900002, + 17.652157213000123 + ], + [ + 79.65860460200008, + 17.644916487000046 + ], + [ + 79.65376971600006, + 17.62678267900003 + ], + [ + 79.63733899400006, + 17.62143290100005 + ], + [ + 79.63277242200007, + 17.623519955000063 + ], + [ + 79.61741933300004, + 17.621946326000057 + ], + [ + 79.61107483500007, + 17.633014427000035 + ], + [ + 79.60204057300007, + 17.63382831200005 + ], + [ + 79.57822796300007, + 17.62681401800006 + ], + [ + 79.57724589900005, + 17.619982297000035 + ], + [ + 79.56318044099999, + 17.619303173000105 + ], + [ + 79.56249112400008, + 17.619651097000144 + ] + ] + ] + } +} \ No newline at end of file diff --git a/src/api/example_calls/get_zstat.json b/src/api/example_calls/get_zstat.json new file mode 100644 index 00000000..ac9b8bfa --- /dev/null +++ b/src/api/example_calls/get_zstat.json @@ -0,0 +1,923 @@ +{ + "geojson": { + "type": "Polygon", + "coordinates": [ + [ + [ + 79.56249112400008, + 17.619651097000144 + ], + [ + 79.56047121800009, + 17.60609346600006 + ], + [ + 79.5547882840001, + 17.59780138700006 + ], + [ + 79.54332792200006, + 17.596823938000114 + ], + [ + 79.5365554710001, + 17.601282934000096 + ], + [ + 79.53051174800015, + 17.594402972000353 + ], + [ + 79.51293497700004, + 17.587982980000106 + ], + [ + 79.51718349800012, + 17.575939836000032 + ], + [ + 79.51440086100018, + 17.56488692200014 + ], + [ + 79.51683437400004, + 17.559427204000144 + ], + [ + 79.53420160299999, + 17.550082106000332 + ], + [ + 79.53693300500004, + 17.530192620000093 + ], + [ + 79.541052, + 17.524158415000272 + ], + [ + 79.54699312100001, + 17.522706874000164 + ], + [ + 79.55289587900006, + 17.510407177000047 + ], + [ + 79.56492846900005, + 17.497989930000188 + ], + [ + 79.577794681, + 17.505487876000075 + ], + [ + 79.59608606600005, + 17.498338055000033 + ], + [ + 79.59392093800005, + 17.510740610000028 + ], + [ + 79.58955101800007, + 17.520072587000072 + ], + [ + 79.59521728400006, + 17.526066134000075 + ], + [ + 79.59960985500004, + 17.517161944000065 + ], + [ + 79.60448212700004, + 17.498167420000073 + ], + [ + 79.61160116900004, + 17.495800992000056 + ], + [ + 79.62310798400006, + 17.49881630400006 + ], + [ + 79.62785314000001, + 17.492150666000043 + ], + [ + 79.63891206400007, + 17.485836010000185 + ], + [ + 79.65047688200008, + 17.49311537600005 + ], + [ + 79.65647628300007, + 17.49333218700002 + ], + [ + 79.65877095200005, + 17.48462603300004 + ], + [ + 79.65663674100006, + 17.473552581000035 + ], + [ + 79.66392373700006, + 17.467144248000068 + ], + [ + 79.67395562900003, + 17.463771940000072 + ], + [ + 79.68802866600004, + 17.455510484000115 + ], + [ + 79.70017199200004, + 17.455627702000072 + ], + [ + 79.69963063300008, + 17.448110692000057 + ], + [ + 79.70695183200007, + 17.447158106000074 + ], + [ + 79.72253449600004, + 17.43069262700004 + ], + [ + 79.72917956500004, + 17.428158761000077 + ], + [ + 79.743717172, + 17.428868298 + ], + [ + 79.75244046000006, + 17.43935185600003 + ], + [ + 79.76181755700003, + 17.43022266500003 + ], + [ + 79.76255683700003, + 17.40764772600005 + ], + [ + 79.78724509500006, + 17.40118525000014 + ], + [ + 79.79652225800004, + 17.393277371000124 + ], + [ + 79.79096679100007, + 17.383414645000073 + ], + [ + 79.78037322100005, + 17.380060480000054 + ], + [ + 79.77716362000007, + 17.369988112000044 + ], + [ + 79.79143282500007, + 17.35657760600003 + ], + [ + 79.79449617900008, + 17.35109007500006 + ], + [ + 79.79214706700003, + 17.337948448000077 + ], + [ + 79.79254369700004, + 17.325289373000032 + ], + [ + 79.80395955600005, + 17.321621569000058 + ], + [ + 79.81204094000003, + 17.324486420000028 + ], + [ + 79.81426685900004, + 17.331143800000063 + ], + [ + 79.831637124, + 17.335508862000097 + ], + [ + 79.84468042000003, + 17.329099961000054 + ], + [ + 79.84894081100003, + 17.334777100000053 + ], + [ + 79.86472726300008, + 17.333836767000037 + ], + [ + 79.87203952100003, + 17.330842596000025 + ], + [ + 79.88073624700007, + 17.347439193000184 + ], + [ + 79.88202400900008, + 17.35735468100006 + ], + [ + 79.89182293500005, + 17.354007806000027 + ], + [ + 79.90311899400007, + 17.37685865900005 + ], + [ + 79.91637210400006, + 17.372446110000055 + ], + [ + 79.93824087900003, + 17.375522837000062 + ], + [ + 79.94058293600006, + 17.383397375000072 + ], + [ + 79.93650146600004, + 17.39202266800004 + ], + [ + 79.969658551, + 17.399110577000158 + ], + [ + 79.97071248400005, + 17.40645341900006 + ], + [ + 79.98035205500008, + 17.405866098000047 + ], + [ + 79.99258248400008, + 17.39722865400006 + ], + [ + 79.99584365500004, + 17.372754518000022 + ], + [ + 80.00626325000007, + 17.37142226900005 + ], + [ + 80.01308751900007, + 17.367218087000026 + ], + [ + 80.02239019700005, + 17.356638435000036 + ], + [ + 80.04743381900005, + 17.352225591000035 + ], + [ + 80.05769935000006, + 17.34578428800006 + ], + [ + 80.06962991700004, + 17.353035867000074 + ], + [ + 80.07664752900007, + 17.362300040000036 + ], + [ + 80.08291688400004, + 17.364859926000065 + ], + [ + 80.10393031800004, + 17.357409338000025 + ], + [ + 80.11085699400007, + 17.358751692000055 + ], + [ + 80.12156855900008, + 17.383625478000056 + ], + [ + 80.14362845700003, + 17.394157440000072 + ], + [ + 80.15867619300008, + 17.378485753000064 + ], + [ + 80.16135284700005, + 17.39154524500003 + ], + [ + 80.15945686500004, + 17.404061498000033 + ], + [ + 80.16701250400007, + 17.40752077700006 + ], + [ + 80.16193910500004, + 17.421359121000023 + ], + [ + 80.17130219700005, + 17.44350080700002 + ], + [ + 80.17908250400006, + 17.43977741300006 + ], + [ + 80.19473051000006, + 17.43801117400011 + ], + [ + 80.20225581100004, + 17.441145462000065 + ], + [ + 80.19501777599999, + 17.46652203900004 + ], + [ + 80.20277331200003, + 17.473585761000038 + ], + [ + 80.21125960400008, + 17.47151312699998 + ], + [ + 80.21582752200004, + 17.479653282000072 + ], + [ + 80.21462992500005, + 17.49476641600006 + ], + [ + 80.20920070700004, + 17.50468492400006 + ], + [ + 80.22850494600004, + 17.53020953500004 + ], + [ + 80.20755912600004, + 17.544446613000048 + ], + [ + 80.20302028700007, + 17.556123807000063 + ], + [ + 80.20695228600005, + 17.57089813400006 + ], + [ + 80.21657112900004, + 17.588537100000053 + ], + [ + 80.22520310200008, + 17.608431030000077 + ], + [ + 80.21090270700006, + 17.611563656000044 + ], + [ + 80.20644965000008, + 17.62406119900004 + ], + [ + 80.20758777100008, + 17.650851572000022 + ], + [ + 80.22828377000008, + 17.654753206000066 + ], + [ + 80.23558219000006, + 17.65053294200004 + ], + [ + 80.24717393000003, + 17.654611767000063 + ], + [ + 80.25528922400008, + 17.663210078000077 + ], + [ + 80.26094565000005, + 17.690436302000023 + ], + [ + 80.26039104800003, + 17.706066575000023 + ], + [ + 80.25003464300005, + 17.71181015600007 + ], + [ + 80.24211194200007, + 17.73351724300005 + ], + [ + 80.24837589200007, + 17.73334552700004 + ], + [ + 80.26005920699998, + 17.75000591200012 + ], + [ + 80.25766998600005, + 17.758494918000054 + ], + [ + 80.25884346900006, + 17.77595647100003 + ], + [ + 80.25336598400008, + 17.778240483000047 + ], + [ + 80.25666319100003, + 17.789454380000052 + ], + [ + 80.25193695800004, + 17.810672247000184 + ], + [ + 80.26312500100005, + 17.819581836000054 + ], + [ + 80.26906413500006, + 17.828109824000023 + ], + [ + 80.27454641300005, + 17.846384085000068 + ], + [ + 80.27606926800007, + 17.85871921100005 + ], + [ + 80.28200840300008, + 17.865419773000042 + ], + [ + 80.28002869200003, + 17.875318331000074 + ], + [ + 80.28246526000004, + 17.904252577000022 + ], + [ + 80.26987258000008, + 17.91744861600006 + ], + [ + 80.26783344200004, + 17.925349594000068 + ], + [ + 80.27176237000003, + 17.958207722000054 + ], + [ + 80.28048554800006, + 17.956029648000026 + ], + [ + 80.30835379500007, + 17.962273354000047 + ], + [ + 80.32312548900006, + 17.976588191000076 + ], + [ + 80.31512378400004, + 17.988111771000035 + ], + [ + 80.31597996900001, + 17.99631982000011 + ], + [ + 80.29535903300001, + 18.000462338000034 + ], + [ + 80.28118538200016, + 17.997377761000166 + ], + [ + 80.27247118500009, + 18.00636288100003 + ], + [ + 80.25513121, + 18.019968743000106 + ], + [ + 80.24249248900014, + 18.014420084999983 + ], + [ + 80.23230881000012, + 18.022015718999967 + ], + [ + 80.22253939100011, + 18.02358365000015 + ], + [ + 80.21505685500011, + 18.01025202 + ], + [ + 80.20210197300003, + 18.019785711000054 + ], + [ + 80.17480650800019, + 18.035673355000085 + ], + [ + 80.15198774100014, + 18.047391569000126 + ], + [ + 80.14209722000004, + 18.054170928000133 + ], + [ + 80.11432265500014, + 18.08174851800004 + ], + [ + 80.1031591360001, + 18.080617802000063 + ], + [ + 80.09104171000007, + 18.07179735 + ], + [ + 80.07949409800011, + 18.07019176600005 + ], + [ + 80.07284663600007, + 18.080055853000033 + ], + [ + 80.05239996699999, + 18.090341983000087 + ], + [ + 80.04124404200007, + 18.106543834000092 + ], + [ + 80.03501865499999, + 18.10239663800013 + ], + [ + 80.02598636600004, + 18.089342075000047 + ], + [ + 80.01694061600006, + 18.080083595000076 + ], + [ + 80.00453702400006, + 18.058876191000024 + ], + [ + 80.00057959700007, + 18.055063320000045 + ], + [ + 79.99839090000006, + 18.03389279000004 + ], + [ + 79.99109299800006, + 18.01378821900005 + ], + [ + 79.99119294400003, + 17.98774308000003 + ], + [ + 79.98324728200004, + 17.97567488300018 + ], + [ + 79.98902188300008, + 17.970480050000162 + ], + [ + 79.98338950700008, + 17.952442365000024 + ], + [ + 79.99022106899997, + 17.945414015000154 + ], + [ + 80.00451405900003, + 17.914538007000033 + ], + [ + 79.99177287400005, + 17.90148323300008 + ], + [ + 79.99208315400006, + 17.88875068300007 + ], + [ + 79.98909394300006, + 17.88407864800007 + ], + [ + 79.98781846100007, + 17.869464996000033 + ], + [ + 79.981193701, + 17.86072033000005 + ], + [ + 79.95408810100008, + 17.864418374000024 + ], + [ + 79.95019621200004, + 17.840551231000063 + ], + [ + 79.93948111300006, + 17.841063123000026 + ], + [ + 79.93441364900008, + 17.83515488200004 + ], + [ + 79.92938452200008, + 17.821051371000067 + ], + [ + 79.93049241600005, + 17.81574359800004 + ], + [ + 79.91823819100006, + 17.802882611000086 + ], + [ + 79.90966023500005, + 17.79767159200003 + ], + [ + 79.90998091300008, + 17.813598745000036 + ], + [ + 79.89631221100007, + 17.813624942000047 + ], + [ + 79.89225760900007, + 17.809813045000055 + ], + [ + 79.87613914000008, + 17.807685807000155 + ], + [ + 79.88366916000007, + 17.785228721000067 + ], + [ + 79.88308360300005, + 17.779411896000056 + ], + [ + 79.89373796300004, + 17.770883194000078 + ], + [ + 79.90578292900005, + 17.772651765000035 + ], + [ + 79.90650908100008, + 17.762401020000027 + ], + [ + 79.90192866100006, + 17.74608784000003 + ], + [ + 79.89602836000006, + 17.736381428000072 + ], + [ + 79.88252884000008, + 17.731344229000058 + ], + [ + 79.86395694200007, + 17.736098001000016 + ], + [ + 79.85828610300007, + 17.731550157000072 + ], + [ + 79.85882474700003, + 17.7235300640001 + ], + [ + 79.84977764100006, + 17.71813230500004 + ], + [ + 79.83631228000007, + 17.71560706300005 + ], + [ + 79.821991, + 17.71020158400006 + ], + [ + 79.81797914500004, + 17.69892470700006 + ], + [ + 79.80503446500006, + 17.700588954000068 + ], + [ + 79.79444443300008, + 17.707543501000032 + ], + [ + 79.78440822099998, + 17.70693138000007 + ], + [ + 79.77060629700003, + 17.69648876900004 + ], + [ + 79.76683939100008, + 17.697913638000045 + ], + [ + 79.75268042900007, + 17.687656953000044 + ], + [ + 79.73662091600005, + 17.689884380000024 + ], + [ + 79.71763590200004, + 17.698785481000073 + ], + [ + 79.71485646900004, + 17.68503885900003 + ], + [ + 79.69972357400007, + 17.682641109000144 + ], + [ + 79.69214758800007, + 17.686146635000057 + ], + [ + 79.682793435, + 17.66979998700009 + ], + [ + 79.67878614600005, + 17.650313090000054 + ], + [ + 79.66346504900002, + 17.652157213000123 + ], + [ + 79.65860460200008, + 17.644916487000046 + ], + [ + 79.65376971600006, + 17.62678267900003 + ], + [ + 79.63733899400006, + 17.62143290100005 + ], + [ + 79.63277242200007, + 17.623519955000063 + ], + [ + 79.61741933300004, + 17.621946326000057 + ], + [ + 79.61107483500007, + 17.633014427000035 + ], + [ + 79.60204057300007, + 17.63382831200005 + ], + [ + 79.57822796300007, + 17.62681401800006 + ], + [ + 79.57724589900005, + 17.619982297000035 + ], + [ + 79.56318044099999, + 17.619303173000105 + ], + [ + 79.56249112400008, + 17.619651097000144 + ] + ] + ] + }, + "date": "2020-01-01", + "layer_id": 1 +} \ No newline at end of file diff --git a/src/api/example_calls/trend.json b/src/api/example_calls/trend.json new file mode 100644 index 00000000..92e4e7b4 --- /dev/null +++ b/src/api/example_calls/trend.json @@ -0,0 +1,916 @@ +{ + "geojson": { + "type": "Polygon", + "coordinates": [ + [ + [ + 79.37870067300008, + 17.511333180000065 + ], + [ + 79.35929984700005, + 17.52151389000005 + ], + [ + 79.34281269400003, + 17.52203587400004 + ], + [ + 79.32261315100016, + 17.527760684000157 + ], + [ + 79.3199513020001, + 17.539943 + ], + [ + 79.3105799280001, + 17.54467842600019 + ], + [ + 79.31187583800005, + 17.55138492600014 + ], + [ + 79.30328392000018, + 17.55629364400005 + ], + [ + 79.29444285300008, + 17.556764152000085 + ], + [ + 79.28948529100006, + 17.569232682000177 + ], + [ + 79.27539950400018, + 17.57985162900013 + ], + [ + 79.26828719700012, + 17.574292525000033 + ], + [ + 79.25959604800016, + 17.560306297000125 + ], + [ + 79.23147680200003, + 17.562902132000033 + ], + [ + 79.22743376600005, + 17.579357309000102 + ], + [ + 79.21277209400017, + 17.594263914000067 + ], + [ + 79.21972781500006, + 17.608793629000104 + ], + [ + 79.21559174700013, + 17.617471369999976 + ], + [ + 79.20464067000006, + 17.62417806900004 + ], + [ + 79.19006485300014, + 17.59939050100013 + ], + [ + 79.18428907900005, + 17.59930107800011 + ], + [ + 79.17891276700004, + 17.58441871000008 + ], + [ + 79.16709451200035, + 17.575431923000167 + ], + [ + 79.1564518960003, + 17.585728790000132 + ], + [ + 79.15220958100019, + 17.597812960000226 + ], + [ + 79.15577703600007, + 17.622926082000106 + ], + [ + 79.14332898700013, + 17.627963662000013 + ], + [ + 79.1397565060002, + 17.63941814499998 + ], + [ + 79.13258975100007, + 17.644413803000134 + ], + [ + 79.12918430900004, + 17.658409401000142 + ], + [ + 79.13140153699999, + 17.665995347000035 + ], + [ + 79.1249803260003, + 17.67051816100036 + ], + [ + 79.11535772900004, + 17.67009570700003 + ], + [ + 79.10238671300004, + 17.675454664000142 + ], + [ + 79.0982016810002, + 17.683773067000345 + ], + [ + 79.09054059800019, + 17.690075730000217 + ], + [ + 79.09004527500014, + 17.69909964800007 + ], + [ + 79.08180385100019, + 17.710563108000144 + ], + [ + 79.07196294700009, + 17.71944275900006 + ], + [ + 79.04601963500005, + 17.725946442000236 + ], + [ + 79.03773894600016, + 17.709206091000055 + ], + [ + 79.02796628500022, + 17.71116515800003 + ], + [ + 79.01603304800028, + 17.725760160999982 + ], + [ + 79.00645247200032, + 17.733785139000133 + ], + [ + 79.00437204900027, + 17.74120988600015 + ], + [ + 78.99557201300007, + 17.753664662000176 + ], + [ + 79.00073479400015, + 17.7705408460003 + ], + [ + 78.9920900570001, + 17.78617719800019 + ], + [ + 78.99118986500008, + 17.79408926800022 + ], + [ + 78.98020775700019, + 17.79874417300016 + ], + [ + 78.97660080100036, + 17.795512575000146 + ], + [ + 78.94612964200024, + 17.78934971700005 + ], + [ + 78.93808595200011, + 17.797884715000293 + ], + [ + 78.92126860700034, + 17.80261194799999 + ], + [ + 78.9068336220003, + 17.812669696000114 + ], + [ + 78.89981650000004, + 17.803852264000113 + ], + [ + 78.8846848010001, + 17.808776961000206 + ], + [ + 78.86787166400006, + 17.808824018000053 + ], + [ + 78.86640991500008, + 17.80704772100006 + ], + [ + 78.86982200700004, + 17.78558329200007 + ], + [ + 78.86255133300006, + 17.757961057000045 + ], + [ + 78.85822952900008, + 17.74861551200007 + ], + [ + 78.84056571900004, + 17.752589976000024 + ], + [ + 78.82804764600007, + 17.7394449760003 + ], + [ + 78.82240052100008, + 17.739758886000175 + ], + [ + 78.82295602300002, + 17.72945420799999 + ], + [ + 78.81651617000006, + 17.723606809000046 + ], + [ + 78.81587274900005, + 17.71061503900006 + ], + [ + 78.80734129600006, + 17.705249052000056 + ], + [ + 78.80352887200007, + 17.708628498000053 + ], + [ + 78.78274652200008, + 17.71057128900003 + ], + [ + 78.78861821200007, + 17.700845956000023 + ], + [ + 78.78250869300007, + 17.699355334000074 + ], + [ + 78.77708557800008, + 17.69035502500003 + ], + [ + 78.76637557700008, + 17.683848359000024 + ], + [ + 78.75409043200005, + 17.685683088000076 + ], + [ + 78.74461740500004, + 17.68356377200007 + ], + [ + 78.73050890600007, + 17.667265188000044 + ], + [ + 78.72461520900004, + 17.66778853200003 + ], + [ + 78.71754618300008, + 17.655913790000056 + ], + [ + 78.71100371800003, + 17.65056022400006 + ], + [ + 78.71146073200003, + 17.63921539100005 + ], + [ + 78.68551875900005, + 17.62210273900007 + ], + [ + 78.69760451100007, + 17.61268172900003 + ], + [ + 78.69616761000003, + 17.604958604000046 + ], + [ + 78.68758126900008, + 17.59568568800006 + ], + [ + 78.69119546400003, + 17.58575668800006 + ], + [ + 78.68260567800007, + 17.577406550000035 + ], + [ + 78.69319131400005, + 17.570071822000045 + ], + [ + 78.70407881800003, + 17.558695052000132 + ], + [ + 78.69525176000008, + 17.550979968000036 + ], + [ + 78.70507268000006, + 17.52874621300026 + ], + [ + 78.71117439500006, + 17.52529335400004 + ], + [ + 78.70762825800006, + 17.48482980700004 + ], + [ + 78.70955786500008, + 17.476275756000064 + ], + [ + 78.71996874400008, + 17.471700333000058 + ], + [ + 78.74704611900006, + 17.469998913000325 + ], + [ + 78.75985781500003, + 17.460284039000044 + ], + [ + 78.75127612300008, + 17.440105678000066 + ], + [ + 78.75900856100003, + 17.43133469500009 + ], + [ + 78.75634421700005, + 17.41201219000004 + ], + [ + 78.74906692600007, + 17.401746882000054 + ], + [ + 78.73780420900005, + 17.394633421000037 + ], + [ + 78.73739800900006, + 17.384614678000048 + ], + [ + 78.73389586900004, + 17.364028167000072 + ], + [ + 78.72947158200003, + 17.351485514000046 + ], + [ + 78.71561333200003, + 17.35664468500005 + ], + [ + 78.70944519200003, + 17.348744302000057 + ], + [ + 78.71223734000006, + 17.33500356600007 + ], + [ + 78.73112087600003, + 17.32670603500003 + ], + [ + 78.75603436100005, + 17.33280359300005 + ], + [ + 78.75754958500005, + 17.315951616000063 + ], + [ + 78.76246159900006, + 17.303544584000065 + ], + [ + 78.75197874300005, + 17.302133854000033 + ], + [ + 78.747570484, + 17.295269333000192 + ], + [ + 78.75365372600004, + 17.27236747200004 + ], + [ + 78.75402199500007, + 17.262255004000053 + ], + [ + 78.76593434500006, + 17.252218534000065 + ], + [ + 78.78658569600003, + 17.24283706700004 + ], + [ + 78.79814825200003, + 17.242310098000075 + ], + [ + 78.81664945500006, + 17.231251850000035 + ], + [ + 78.81604375100005, + 17.213170923000064 + ], + [ + 78.80697122600003, + 17.208935305000068 + ], + [ + 78.80228157900007, + 17.198750802000063 + ], + [ + 78.79642141100004, + 17.197996525000065 + ], + [ + 78.78591366900008, + 17.20564901099999 + ], + [ + 78.76727420200007, + 17.21278927700007 + ], + [ + 78.76489258200007, + 17.206799430000046 + ], + [ + 78.77253365100006, + 17.191717631000074 + ], + [ + 78.78047382599999, + 17.187548417000357 + ], + [ + 78.78229244000005, + 17.17814247800004 + ], + [ + 78.78915966000005, + 17.164197210000054 + ], + [ + 78.78487195400004, + 17.15957098000007 + ], + [ + 78.77794348200007, + 17.163051627000073 + ], + [ + 78.77505370100005, + 17.152737325000032 + ], + [ + 78.78610169300003, + 17.137529150000034 + ], + [ + 78.79894962700007, + 17.13243557100003 + ], + [ + 78.83387024900003, + 17.113494725000066 + ], + [ + 78.83353015100005, + 17.10373646200003 + ], + [ + 78.81825017800008, + 17.108511622000037 + ], + [ + 78.81549293900008, + 17.094662792000065 + ], + [ + 78.83583058700003, + 17.082105369000033 + ], + [ + 78.83844714300005, + 17.07429854000003 + ], + [ + 78.84397639500008, + 17.07201425200003 + ], + [ + 78.87493867600006, + 17.05918179200006 + ], + [ + 78.87992312700004, + 17.04635657400007 + ], + [ + 78.89256827900005, + 17.04419639500003 + ], + [ + 78.90134080500007, + 17.076320408000072 + ], + [ + 78.911896732, + 17.094642131000057 + ], + [ + 78.92554368400005, + 17.09523220400007 + ], + [ + 78.93151563000004, + 17.09184703599999 + ], + [ + 78.93575896600004, + 17.099208332000046 + ], + [ + 78.94307740300007, + 17.103877754000052 + ], + [ + 78.95070646700003, + 17.114735094000025 + ], + [ + 78.95294041700004, + 17.12272949000004 + ], + [ + 78.94889664000004, + 17.128018916000258 + ], + [ + 78.95330966800003, + 17.133645956000066 + ], + [ + 78.97192173200006, + 17.127481043000046 + ], + [ + 78.97467529300008, + 17.129646794000053 + ], + [ + 78.99214673900008, + 17.155676721000077 + ], + [ + 78.99046250700007, + 17.16053534100007 + ], + [ + 78.97790506100006, + 17.168495719000077 + ], + [ + 78.97940860800003, + 17.174604042000226 + ], + [ + 78.97278679000004, + 17.184143324000047 + ], + [ + 78.96087085700003, + 17.190894748000062 + ], + [ + 78.96242802700004, + 17.203673371000036 + ], + [ + 78.97249939800008, + 17.21261043900006 + ], + [ + 78.97222465700008, + 17.21699674200022 + ], + [ + 78.97968344000003, + 17.250005672000043 + ], + [ + 78.97532308000007, + 17.258670394000205 + ], + [ + 78.97705831100006, + 17.284106424000072 + ], + [ + 78.98814184100007, + 17.28239490800007 + ], + [ + 79.00325531400006, + 17.269504470000072 + ], + [ + 79.04005846900003, + 17.266020309000055 + ], + [ + 79.05298153600006, + 17.258215577000044 + ], + [ + 79.06578085100006, + 17.259368232000043 + ], + [ + 79.07046127800004, + 17.253410873000064 + ], + [ + 79.08515757500004, + 17.251684492000038 + ], + [ + 79.10289975500007, + 17.24503517 + ], + [ + 79.11114914900008, + 17.268338679000067 + ], + [ + 79.11842244000007, + 17.27745816600003 + ], + [ + 79.13750823100008, + 17.27717389000003 + ], + [ + 79.14481635100003, + 17.28312180100005 + ], + [ + 79.15166396800004, + 17.280863985000053 + ], + [ + 79.14796780700004, + 17.270849103000046 + ], + [ + 79.15629883000008, + 17.260762122000074 + ], + [ + 79.17004383700004, + 17.25515802500007 + ], + [ + 79.18153697300005, + 17.259823591000043 + ], + [ + 79.18425316900004, + 17.273390627000026 + ], + [ + 79.203677169, + 17.263354556000024 + ], + [ + 79.20478881600008, + 17.270061244000146 + ], + [ + 79.21586351000008, + 17.28884705400003 + ], + [ + 79.21918526400003, + 17.313738791000333 + ], + [ + 79.23455486600005, + 17.318173004000073 + ], + [ + 79.24683853000005, + 17.315081363000047 + ], + [ + 79.25341493800005, + 17.327287355000067 + ], + [ + 79.24064162200006, + 17.336291493000033 + ], + [ + 79.23565069700004, + 17.33627851400007 + ], + [ + 79.23500531300004, + 17.346607450000022 + ], + [ + 79.24088434600003, + 17.35841087500006 + ], + [ + 79.25005768900007, + 17.35695308700008 + ], + [ + 79.27330105700008, + 17.35996707100003 + ], + [ + 79.29340750300008, + 17.35663582600006 + ], + [ + 79.30970681100007, + 17.35895580000033 + ], + [ + 79.33118144600007, + 17.35925323300006 + ], + [ + 79.34331669700003, + 17.35630270100006 + ], + [ + 79.35840248000005, + 17.348450480000054 + ], + [ + 79.37629602700008, + 17.34331084400003 + ], + [ + 79.40170867000006, + 17.347398758000054 + ], + [ + 79.43875687800005, + 17.345828314000073 + ], + [ + 79.45808114400006, + 17.343213083000023 + ], + [ + 79.44298884500006, + 17.362577096000052 + ], + [ + 79.42557119000008, + 17.373808152000038 + ], + [ + 79.41950316800006, + 17.381550521000065 + ], + [ + 79.41253491600008, + 17.39800727000005 + ], + [ + 79.41516184100004, + 17.405031439000027 + ], + [ + 79.42338525900004, + 17.41137032300003 + ], + [ + 79.42332815200001, + 17.422391986000264 + ], + [ + 79.41847405100003, + 17.434898433000058 + ], + [ + 79.40568573900003, + 17.45267547900005 + ], + [ + 79.38880346300004, + 17.468481048000058 + ], + [ + 79.36516547400004, + 17.48429223000005 + ], + [ + 79.36812071400004, + 17.49146295500003 + ], + [ + 79.36051795300006, + 17.50115747500007 + ], + [ + 79.37155580100006, + 17.502738114000067 + ], + [ + 79.37870067300008, + 17.511333180000065 + ] + ] + ] + }, + "startdate": "2016-01-01", + "enddate": "2023-04-12", + "layer_id": 1 +} \ No newline at end of file diff --git a/src/api/gunicorn.py b/src/api/gunicorn.py index 52cedb7b..aff082cd 100644 --- a/src/api/gunicorn.py +++ b/src/api/gunicorn.py @@ -1,21 +1,13 @@ -import os -import configparser import multiprocessing - +import os from dotenv import load_dotenv load_dotenv() -config = configparser.ConfigParser() -config.read('config/config.ini') -ACCESS_LOG_PATH = config['gunicorn']['Accesslogpath'] -ERROR_LOG_PATH = config['gunicorn']['Errorlogpath'] - - -name = "gunicorn config for FastAPI" -accesslog = ACCESS_LOG_PATH -errorlog = ERROR_LOG_PATH +name = "gunicorn config for api v2 running on fastapi" +accesslog = "/home/azureuser/api-v2-logs/gunicorn-access.log" +errorlog = "/home/azureuser/api-v2-logs/gunicorn-error.log" -bind = "0.0.0.0:8000" +bind = "0.0.0.0:8002" worker_class = "uvicorn.workers.UvicornWorker" workers = multiprocessing.cpu_count () * 2 + 1 diff --git a/src/api/main.py b/src/api/main.py deleted file mode 100644 index 162752dc..00000000 --- a/src/api/main.py +++ /dev/null @@ -1,92 +0,0 @@ -import uvicorn -from fastapi.middleware.cors import CORSMiddleware -from fastapi import FastAPI, Depends, status -from routes.index import usecase,layer,trend,parameter,download,current,custom,points,weather,customdistrict,market,warehouse\ - ,lulc -from fastapi_pagination import add_pagination -from fastapi.staticfiles import StaticFiles - -tags_metadata = [ - { - "name":"Usecase", - "description":"Operations related to usecase" - }, - { - "name":"Layerconfig", - "description":"Operations related to layer configuration" - }, - { - "name":"Layer", - "description":"Operations related to layers" - }, - { - "name":"Download", - "description":"Endpoints for download data functionality" - }, - { - "name":"Custom", - "description":"Endpoints to get data for custom drawn shape" - }, - { - "name":"Fire events", - "description":"Endpoints to get fire events data" - - }, - { - "name":"Weather Data", - "description":"Endpoints to get weather data" - }, - { - "name":"Market Yard Data", - "description":"Endpoints to get market yard data" - }, - { - "name":"Warehouse Details", - "description":"Endpoints to get Warehouse Data" - }, - { - "name":"LULC", - "description":"Endpoints to get LULC Data" - } - -] - - - -app = FastAPI(debug=True,title="DiCRA - Data in Climate Resilient Agriculture") -app.mount("/static", StaticFiles(directory="static"), name="static") -origins = ["*"] - - -app.add_middleware( - CORSMiddleware, - allow_origins=origins, - allow_credentials=True, - allow_methods=["*"], - allow_headers=["*"], -) - -app.include_router(usecase,tags=["Usecase"],include_in_schema=False) -app.include_router(layer,tags=['Layerconfig'],include_in_schema=False) -app.include_router(current,tags=['Layer'],include_in_schema=False) -app.include_router(download,tags=['Download']) -app.include_router(custom,tags=['Custom'],include_in_schema=False) -app.include_router(points,tags=['Fire events'],include_in_schema=False) -app.include_router(weather,tags=['Weather Data'],include_in_schema=False) -app.include_router(trend,include_in_schema=False) -app.include_router(parameter,include_in_schema=False) -app.include_router(customdistrict,tags=['Custom'],include_in_schema=False) -app.include_router(market,tags=['Market Yard Data'],include_in_schema=False) -app.include_router(warehouse,tags=['Warehouse Details'],include_in_schema=False) -app.include_router(lulc,tags=['LULC'],include_in_schema=False) - - - - -if __name__ == "__main__": - uvicorn.run("main:app",host="0.0.0.0", port=5004,reload=True) - - - - - diff --git a/src/api/models/downlodables.py b/src/api/models/downlodables.py deleted file mode 100644 index 0430f4dc..00000000 --- a/src/api/models/downlodables.py +++ /dev/null @@ -1,9 +0,0 @@ -from sqlalchemy import Integer, String,Text,Boolean,DateTime,Date -from sqlalchemy.sql.schema import Column -from db.database import Base - -class Downloadables(Base): - __tablename__ = 'tbl_downloadfiles' - id = Column(Integer, primary_key=True) - parameter = Column(String(255)) - filename_on_blob = Column(String(255)) diff --git a/src/api/models/fireevents.py b/src/api/models/fireevents.py deleted file mode 100644 index c031eb3f..00000000 --- a/src/api/models/fireevents.py +++ /dev/null @@ -1,21 +0,0 @@ -from sqlalchemy import Integer, String,Text,Boolean,DateTime, Float, BigInteger -from sqlalchemy.sql.schema import Column -from db.database import Base -from geoalchemy2 import Geometry - -class Firepoints(Base): - __tablename__ = 'tbl_points' - id = Column(Integer, primary_key=True) - brightness = Column(Float) - scan = Column(Float) - track = Column(Float) - acq_date = Column(Text) - acq_time = Column(BigInteger) - satellite = Column(Text) - instrument = Column(Text) - confidence = Column(BigInteger) - version = Column(Text) - bright_t31 = Column(Float) - frp = Column(Float) - daynight = Column(Text) - geometry = Column(Geometry(geometry_type='POINT')) \ No newline at end of file diff --git a/src/api/models/index.py b/src/api/models/index.py deleted file mode 100644 index fb1ef6c0..00000000 --- a/src/api/models/index.py +++ /dev/null @@ -1,11 +0,0 @@ -from .job import Job -from .usecase import Usecase -from .layer import Layer -from .parameters import Parameter -from .downloads import Downloads -from .weather import Weather -from .fireevents import Firepoints -from .market_yard import Market_data,Market_point -from .warehouse import Warehouse -from .downlodables import Downloadables - diff --git a/src/api/models/job.py b/src/api/models/job.py deleted file mode 100644 index 05ced7eb..00000000 --- a/src/api/models/job.py +++ /dev/null @@ -1,12 +0,0 @@ -from sqlalchemy import Integer, String -from sqlalchemy.sql.schema import Column -from db.database import Base - - -class Job(Base): - __tablename__ = 'jobs' - - id = Column(Integer, primary_key=True) - title = Column(String, nullable=False) - description = Column(String, nullable=False) - diff --git a/src/api/models/layer.py b/src/api/models/layer.py deleted file mode 100644 index 72207a28..00000000 --- a/src/api/models/layer.py +++ /dev/null @@ -1,28 +0,0 @@ -from sqlalchemy import Integer, String,Text,Boolean,DateTime -from sqlalchemy.sql.schema import Column -from db.database import Base - -class Layer(Base): - __tablename__ = 'tbl_layers' - id = Column(Integer, primary_key=True) - layer_name = Column(String(255)) - short_description = Column(Text) - long_description = Column(Text) - source=Column(String(255)) - url = Column(String(255)) - unit = Column(String(255)) - color= Column(String(255)) - update_frequnecy = Column(Integer) - last_updated = Column(DateTime) - raster_status = Column(Boolean) - vector_status = Column(Boolean) - multiple_files = Column(Boolean) - display_name=Column(String(255)) - category=Column(String(255)) - isavailable=Column(Boolean) - citation=Column(Text) - standards=Column(Text) - timerangefilter=Column(Boolean) - showcustom=Column(Boolean) - datafromvector=Column(Boolean) - \ No newline at end of file diff --git a/src/api/models/market_yard.py b/src/api/models/market_yard.py deleted file mode 100644 index 838b45e9..00000000 --- a/src/api/models/market_yard.py +++ /dev/null @@ -1,34 +0,0 @@ -from sqlalchemy import Integer, String,Text,Boolean,DateTime, Float, BigInteger -from sqlalchemy.sql.schema import Column -from db.database import Base - - -class Market_point(Base): - __tablename__ = 'tbl_market_yard' - id = Column(Integer, primary_key=True) - district = Column(Text) - capacity = Column(Text) - name = Column(Text) - latitude = Column(Text) - longitude = Column(Text) - -class Market_data(Base): - __tablename__ = 'tbl_market_yard_day_prices' - id = Column(BigInteger, primary_key=True) - index = Column(BigInteger) - DDate = Column(Text) - AmcCode = Column(BigInteger) - AmcName = Column(Text) - YardCode = Column(BigInteger) - YardName = Column(Text) - CommCode = Column(BigInteger) - CommName = Column(Text) - VarityCode = Column(BigInteger) - VarityName = Column(Text) - ProgArrivals = Column(Float) - Arrivals = Column(Float) - Minimum = Column(Float) - Maximum = Column(Float) - Model = Column(Float) - Valuation = Column(Float) - MarketFee = Column(Float) \ No newline at end of file diff --git a/src/api/models/parameters.py b/src/api/models/parameters.py deleted file mode 100644 index 4d46bf8a..00000000 --- a/src/api/models/parameters.py +++ /dev/null @@ -1,9 +0,0 @@ -from sqlalchemy import Integer, String,Text,Boolean,DateTime,Date -from sqlalchemy.sql.schema import Column -from db.database import Base - -class Parameter(Base): - __tablename__ = 'tbl_parameters' - id = Column(Integer, primary_key=True) - parameter_name= Column(String(255)) - available_date= Column(Date) \ No newline at end of file diff --git a/src/api/models/warehouse.py b/src/api/models/warehouse.py deleted file mode 100644 index 045a2df8..00000000 --- a/src/api/models/warehouse.py +++ /dev/null @@ -1,20 +0,0 @@ -from sqlalchemy import Integer, String, Text, Boolean, DateTime -from sqlalchemy.sql.schema import Column -from db.database import Base - - -class Warehouse(Base): - __tablename__ = 'tbl_warehouses' - id = Column(Integer, primary_key=True) - region = Column(String(255)) - wh_type = Column(String(255)) - warehouse = Column(String(255)) - district = Column(String(255)) - capacity = Column(String(255)) - occupancy = Column(String(255)) - vacancy = Column(String(255)) - latitude = Column(String(255)) - longitude = Column(String(255)) - address = Column(Text) - status = Column(String(255)) - diff --git a/src/api/models/weather.py b/src/api/models/weather.py deleted file mode 100644 index c427be81..00000000 --- a/src/api/models/weather.py +++ /dev/null @@ -1,17 +0,0 @@ -from sqlalchemy import Integer, String,Text,Boolean,DateTime,Date -from sqlalchemy.sql.schema import Column -from db.database import Base - -class Weather(Base): - __tablename__ = 'tbl_weather' - id = Column(Integer, primary_key=True) - district= Column(String(255)) - mandal= Column(String(255)) - data_date=Column(Date) - rain=Column(String(200)) - min_temp=Column(String(200)) - max_temp=Column(String(200)) - min_humidity=Column(String(200)) - max_humidity=Column(String(200)) - min_wind_speed=Column(String(200)) - max_wind_speed=Column(String(200)) \ No newline at end of file diff --git a/src/api/requirements.txt b/src/api/requirements.txt index 9b46409f..5d6e5a7f 100644 --- a/src/api/requirements.txt +++ b/src/api/requirements.txt @@ -1,52 +1,54 @@ -affine==2.3.0 -anyio==3.5.0 -asgiref==3.5.0 -attrs==21.4.0 -azure-core==1.23.0 +affine==2.4.0 +alembic==1.10.3 +anyio==3.6.2 +attrs==23.1.0 +autopep8==2.0.2 +azure-core==1.27.1 azure-storage-blob==12.9.0 -boto3==1.21.13 -botocore==1.24.14 -certifi==2021.10.8 -cffi==1.15.0 -charset-normalizer==2.0.12 -click==8.0.4 +certifi==2022.12.7 +cffi==1.15.1 +charset-normalizer==3.1.0 +click==8.1.3 click-plugins==1.1.1 cligj==0.7.2 -cryptography==36.0.1 -fastapi==0.75.0 +cryptography==41.0.1 +databases==0.7.0 +fastapi==0.95.0 fastapi-pagination==0.9.1 -Fiona==1.8.21 -GeoAlchemy2==0.11.1 -greenlet==1.1.2 -h11==0.13.0 -idna==3.3 -importlib-metadata==4.11.2 +Fiona==1.8.22 +greenlet==2.0.2 +gunicorn==20.1.0 +h11==0.14.0 +idna==3.4 +importlib-metadata==6.6.0 +importlib-resources==5.12.0 isodate==0.6.1 -jmespath==0.10.0 -msrest==0.6.21 +Mako==1.2.4 +MarkupSafe==2.1.2 +msrest==0.7.1 munch==2.5.0 -numpy==1.22 -oauthlib==3.2.0 -packaging==21.3 -psycopg2-binary==2.9.3 +numpy==1.24.3 +oauthlib==3.2.2 +psycopg2-binary==2.9.6 +pycodestyle==2.10.0 pycparser==2.21 -pydantic==1.9.0 -pyparsing==3.0.7 -python-dateutil==2.8.2 -python-multipart==0.0.5 -rasterio==1.2.10 -rasterstats==0.16.0 -requests==2.27.1 +pydantic==1.10.7 +pyparsing==3.0.9 +python-dotenv==1.0.0 +python-multipart==0.0.6 +rasterio==1.3.6 +rasterstats==0.18.0 +requests==2.31.0 requests-oauthlib==1.3.1 -s3transfer==0.5.2 -Shapely==1.8.1.post1 -simplejson==3.17.6 +shapely==2.0.1 +simplejson==3.19.1 six==1.16.0 -sniffio==1.2.0 +sniffio==1.3.0 snuggs==1.4.7 -SQLAlchemy==1.4.32 -starlette==0.17.1 -typing_extensions==4.1.1 -urllib3==1.26.8 -uvicorn==0.17.5 -zipp==3.7.0 +SQLAlchemy==1.4.47 +starlette==0.26.1 +tomli==2.0.1 +typing-extensions==4.5.0 +urllib3==2.0.3 +uvicorn==0.21.1 +zipp==3.15.0 \ No newline at end of file diff --git a/src/api/routes/currentlayer.py b/src/api/routes/currentlayer.py deleted file mode 100644 index bb424816..00000000 --- a/src/api/routes/currentlayer.py +++ /dev/null @@ -1,99 +0,0 @@ -from logging import exception -import os -import json -import boto3 -import botocore -import configparser -from boto3.session import Session -from fastapi.responses import FileResponse -from fastapi import APIRouter,File, UploadFile, Depends -from db.database import get_db -from models.index import Parameter -from sqlalchemy import desc -from datetime import datetime -import rasterio -from rasterio.session import AWSSession -from azure.storage.blob import BlobClient -from fastapi.responses import ORJSONResponse - - - -config = configparser.ConfigParser() -config.read('config/config.ini') -AWS_ACCESS_KEY = config['AWS']['ACCESSKEY'] -AWS_SECRET_KEY = config['AWS']['SECRETKEY'] -AZURE_ACCOUNT_URL=config['azureblob']['Accounturl'] -CONTAINER_NAME=config['azureblob']['Containername'] -S3_BUCKET = config['s3bucket']['BucketName'] -TEMP_FILE_PATH=config['paths']['Temporaryfiles'] - -current=APIRouter() -@current.get('/currentraster', status_code=200) -async def current_raster(parameter:str,db: Session = Depends(get_db)): - availabledates=db.query(Parameter.available_date).filter(Parameter.parameter_name==parameter).order_by(desc(Parameter.available_date)).first() - db.close() - try: - filedate = datetime.strptime(str(availabledates[0]), '%Y-%m-%d').strftime('%d-%m-%Y') - except TypeError: - return { - 'code':404, - 'message':"Please provide a valid parameter" - } - file_path = 'parameters/'+str(parameter)+'/RASTER/'+filedate+'.tif' - local_file_name = str(TEMP_FILE_PATH)+parameter + \ - "_"+filedate+"_RASTERCURRENT.tif" - try: - blob = BlobClient(account_url=AZURE_ACCOUNT_URL, - container_name=CONTAINER_NAME, - blob_name=str(file_path) - ) - with open(str(local_file_name), "wb") as f: - data = blob.download_blob() - data.readinto(f) - f.close() - blob.close() - return FileResponse(local_file_name) - except: - return{ - 'code':404, - 'message':"No file found" - } - - -@current.get('/currentvector', status_code=200) -async def current_vector(parameter:str,admbound:str,db: Session = Depends(get_db)): - availabledates=db.query(Parameter.available_date).filter(Parameter.parameter_name==parameter).order_by(desc(Parameter.available_date)).first() - try: - filedate = datetime.strptime(str(availabledates[0]), '%Y-%m-%d').strftime('%d-%m-%Y') - except TypeError: - return { - 'code':404, - 'message':"Please provide a valid parameter" - } - FILE_TO_READ = 'parameters/'+str(parameter)+'/VECTOR/'+str(admbound).upper()+'/'+str(filedate)+'.geojson' - try: - blob = BlobClient(account_url=AZURE_ACCOUNT_URL, - container_name=CONTAINER_NAME, - blob_name=str(FILE_TO_READ) - ) - streamdownloader=blob.download_blob() - fileReader = json.loads(streamdownloader.readall()) - return{ - 'code':200, - 'data':fileReader - } - except: - return{ - 'code':404, - 'message':"No file found" - } - - - - - - - - - - diff --git a/src/api/routes/downloadlayer.py b/src/api/routes/downloadlayer.py deleted file mode 100644 index 3e5d28c1..00000000 --- a/src/api/routes/downloadlayer.py +++ /dev/null @@ -1,36 +0,0 @@ -import os -import configparser -from boto3.session import Session -from fastapi.responses import FileResponse -from fastapi import APIRouter,File, UploadFile - - -config = configparser.ConfigParser() -config.read('config/config.ini') -AWS_ACCESS_KEY = config['AWS']['ACCESSKEY'] -AWS_SECRET_KEY = config['AWS']['SECRETKEY'] -S3_BUCKET = config['s3bucket']['BucketName'] -TEMP_FILE_PATH=config['paths']['Temporaryfiles'] - -raster=APIRouter() - -@raster.get('/currentlayer', status_code=200) -def all(parameter:str=None): - session = Session(aws_access_key_id=AWS_ACCESS_KEY, aws_secret_access_key=AWS_SECRET_KEY) - - s3 = session.resource('s3') - - bucket = s3.Bucket('undp-dataforpolicy') - - objects = bucket.objects.filter(Prefix='parameters/NDVI/RASTER') - - if parameter == 'NDVI': - for object in objects: - if object.key.endswith('.tif'): - key = object.key - file = key.split('/') - filename = str(file[3]) - print(filename) - local_filename = os.path.join(TEMP_FILE_PATH, filename) - bucket.download_file(key, local_filename) - return FileResponse(local_filename) \ No newline at end of file diff --git a/src/api/routes/fireevents.py b/src/api/routes/fireevents.py deleted file mode 100644 index 40f6782b..00000000 --- a/src/api/routes/fireevents.py +++ /dev/null @@ -1,134 +0,0 @@ -from fastapi import APIRouter,Depends -from fastapi import FastAPI -import json -import psycopg2 -from schemas.index import GetPoint, GetPointDateRange -from models.index import Firepoints -from datetime import datetime -from sqlalchemy.orm import Session -from sqlalchemy import func -from db.database import get_db -import time -from sqlalchemy import func -import numpy as np - -points=APIRouter() - - -@points.post('/getpoints', status_code=200) -def get_points(details:GetPoint,db: Session = Depends(get_db)): - points_list = [] - geom = json.dumps(details.geojson) - res = db.query(Firepoints.brightness, Firepoints.scan, Firepoints.track, Firepoints.acq_date, Firepoints.acq_time, - Firepoints.satellite, Firepoints.instrument, Firepoints.confidence, Firepoints.version, - Firepoints.bright_t31, Firepoints.frp, Firepoints.daynight, func.ST_AsText(Firepoints.geometry), - func.ST_X(Firepoints.geometry), func.ST_Y(Firepoints.geometry)).filter(func.ST_Within(Firepoints.geometry, - func.ST_GeomFromGeoJSON(geom)),Firepoints.acq_date.between(details.startdate, details.enddate)).all() - for row in res: - details = {"brightness": row[0], "scan": row[1], "track": row[2], \ - "acq_date": row[3], "acq_time": row[4], "satellite": row[5], \ - "instrument": row[6], "confidence": row[7], "version": row[8], \ - "bright_t31": row[9], "frp": row[10], "daynight": row[11], \ - "geometry": row[12]} - points_list.append(details) - db.close() - if len(points_list) == 0: - return {'code': 404, - 'message': "No data available for the given date range"} - else: - return {'code':200, 'properties':points_list},{"count": len(points_list)} - -# @points.post('/getpointstrend', status_code=200) -# def get_trend(details:GetPoint,db: Session = Depends(get_db)): -# points_trend = [] -# geom = json.dumps(details.geojson) -# sql = '''SELECT EXTRACT(EPOCH FROM TO_DATE(acq_date, 'YYYY-MM-DD')) as unix, COUNT(*) -# FROM public.tbl_points -# WHERE ST_Within(geometry, ST_GeomFromGeoJSON(' '''+geom+''' ')) AND acq_date BETWEEN ' ''' +details.startdate+''' ' AND ' '''+details.enddate+''' ' GROUP BY unix;''' - -# res = db.execute(sql).fetchall() -# for row in res: -# points_trend.append([row[0]*1000,row[1]]) -# db.close() -# if len(points_trend) == 0: -# return {'code': 404, -# 'message': "No data available for the given date range"} -# else: -# return {'code':200, 'trend':points_trend} - -@points.post('/getpointsindaterange', status_code=200) -def get_fire_events_in_date_range(details:GetPointDateRange,db: Session = Depends(get_db)): - data = [] - format = "%Y-%m-%d" - try: - datetime.strptime(details.startdate, format) - datetime.strptime(details.enddate, format) - except ValueError: - return { - "message": "start date and end date in should be YYYY-MM-DD" - } - res = db.query(Firepoints.brightness, Firepoints.scan, Firepoints.track, Firepoints.acq_date, Firepoints.acq_time, - Firepoints.satellite, Firepoints.instrument, Firepoints.confidence, Firepoints.version, - Firepoints.bright_t31, Firepoints.frp, Firepoints.daynight, func.ST_AsText(Firepoints.geometry), - func.ST_X(Firepoints.geometry), func.ST_Y(Firepoints.geometry)).filter(Firepoints.acq_date.between(details.startdate, details.enddate)).all() - - for row in res: - result = {"brightness": row[0], "scan": row[1], "track": row[2], \ - "acq_date": row[3], "acq_time": row[4], "satellite": row[5], \ - "instrument": row[6], "confidence": row[7], "version": row[8], \ - "bright_t31": row[9], "frp": row[10], "daynight": row[11], \ - "latitude": row[14], "longitude": row[13]} - data.append(result) - geojson = { - "type": "FeatureCollection", - "features": [ - { - "type": "Feature", - "geometry": { - "type": "Point", - "coordinates": [d["longitude"], d["latitude"]], - }, - "properties": d, - } for d in data] - } - db.close() - if len(data) == 0: - return {'code': 404, - 'message': "No data available for the given date range"} - else: - return geojson -@points.post('/getpointstrend', status_code=200) -def get_fire_events_trend(details:GetPoint,db: Session = Depends(get_db)): - points_list = [] - trend_list=[] - geom = json.dumps(details.geojson) - res = db.query(Firepoints.brightness, Firepoints.scan, Firepoints.track, Firepoints.acq_date, Firepoints.acq_time, - Firepoints.satellite, Firepoints.instrument, Firepoints.confidence, Firepoints.version, - Firepoints.bright_t31, Firepoints.frp, Firepoints.daynight, func.ST_AsText(Firepoints.geometry), - func.ST_X(Firepoints.geometry), func.ST_Y(Firepoints.geometry)).filter(func.ST_Within(Firepoints.geometry, - func.ST_GeomFromGeoJSON(geom)),Firepoints.acq_date.between(details.startdate, details.enddate)).all() - db.close() - for row in res: - points_list.append(row[3]) - v,c = np.unique(points_list, return_counts=True) - if v.size != 0: - values=v.tolist() - count=c.tolist() - for val,cnt in zip(values,count): - unix=time.mktime(datetime.strptime(val, "%Y-%m-%d").timetuple()) - trend_list.append([unix*1000,cnt]) - - return{ - 'code':200, - 'trend':trend_list - - } - else: - return{ - 'code': 404, - 'message': "No data available for the given date range" - - } - - - \ No newline at end of file diff --git a/src/api/routes/index.py b/src/api/routes/index.py deleted file mode 100644 index b20d60dd..00000000 --- a/src/api/routes/index.py +++ /dev/null @@ -1,15 +0,0 @@ -import imp -from .usecase import usecase -from .layer import layer -from .trend import trend -from .parameter import parameter -from .userdownload import download -from .currentlayer import current -from .customshape import custom -from .fireevents import points -from .weatherdata import weather -from .customdistrict import customdistrict -from .market_yard import market -from .warehouse import warehouse -from .lulc import lulc - diff --git a/src/api/routes/layer.py b/src/api/routes/layer.py deleted file mode 100644 index a5613ceb..00000000 --- a/src/api/routes/layer.py +++ /dev/null @@ -1,67 +0,0 @@ -import configparser -from fastapi import APIRouter -from fastapi import FastAPI, Depends -from sqlalchemy.orm import Session -from sqlalchemy.sql.expression import true -from schemas.index import CreateLayer -from db.database import get_db -from models.index import Layer -from itertools import groupby -from fastapi_pagination import LimitOffsetPage, Page, add_pagination,paginate -import itertools -from operator import itemgetter - - -from pydantic import BaseModel - - -layer= APIRouter() - -@layer.post("/addlayer") -def create(details:CreateLayer, db: Session = Depends(get_db)): - to_create=Layer( - layer_name=details.layer_name, - short_description=details.short_description, - long_description=details.long_description, - source=details.source, - url=details.url, - unit=details.unit, - color=details.color, - update_frequnecy=details.update_frequnecy, - last_updated=details.last_updated, - raster_status=details.raster_status, - vector_status=details.vector_status, - multiple_files=details.multiple_files, - display_name=details.display_name, - category=details.category, - isavailable=details.isavailable, - citation=details.citation, - standards=details.standards, - timerangefilter=details.timerangefilter, - showcustom=details.showcustom, - datafromvector=details.datafromvector - ) - db.add(to_create) - db.commit() - return { - "success": True, - "created_id": to_create.id - } - -@layer.get("/getlayerconfig") -async def get_layers(db:Session=Depends(get_db)): - result=db.query(Layer).order_by(Layer.id).all() - db.close() - return result - -@layer.get("/layers",response_model=Page[CreateLayer]) -@layer.get("/layers/limit-offset",response_model=LimitOffsetPage[CreateLayer]) -async def get_layers(db: Session = Depends(get_db)): - return paginate(db.query(Layer).all()) -add_pagination(layer) - - - - - - diff --git a/src/api/routes/market_yard.py b/src/api/routes/market_yard.py deleted file mode 100644 index d553f084..00000000 --- a/src/api/routes/market_yard.py +++ /dev/null @@ -1,123 +0,0 @@ -from fastapi import APIRouter, Depends, FastAPI -import json -import psycopg2 -from schemas.index import GetMarketDateRange,GetMarketCommTrend -from datetime import datetime -import time -from boto3.session import Session -from db.database import get_db -from sqlalchemy import func -from sqlalchemy.sql import text -from models.index import Market_point, Market_data -from geoalchemy2 import Geometry -from datetime import date, timedelta, datetime - -market=APIRouter() - -@market.get('/getmarketyard', status_code=200) -def get_market_yard(db:Session=Depends(get_db)): - data = [] - market_result = db.query(Market_point.district, Market_point.capacity, Market_point.name, - Market_point.latitude, Market_point.longitude).all() - db.close() - for row in market_result: - result = {"district": row[0], "capacity": row[1], "name": row[2], \ - "latitude": float(row[3]), "longitude": float(row[4])} - data.append(result) - geojson = { - "type": "FeatureCollection", - "features": [ - { - "type": "Feature", - "geometry": { - "type": "Point", - "coordinates": [d["longitude"], d["latitude"]], - }, - "properties": d, - } for d in data] - } - if len(data) == 0: - return {'code': 404, - 'message': "No data available for the given date range"} - else: - return { - 'code':200, - 'data':geojson - } - -@market.post('/getmarketyarddaterange', status_code=200) -def get_market_yard_details(param:GetMarketDateRange, db:Session=Depends(get_db)): - try: - result = db.execute(text("""SELECT "DDate", "AmcCode", "AmcName", "YardCode", "YardName", "CommCode", "CommName", "VarityCode",\ - "VarityName", "ProgArrivals", "Arrivals", "Minimum", "Maximum", "Model", "Valuation", "MarketFee" \ - FROM tbl_market_yard_day_prices WHERE "DDate" BETWEEN '"""+param.startdate+"""' AND '"""+param.enddate+"""'\ - AND "YardName" ='"""+param.name+"""' """)).fetchall() - db.close() - if result == []: - return { - "code":200, - "message": "Data Not found"} - else: - return {"code": 200, "details" : result} - except: - return { - "message": "start date and end date in should be YYYY-MM-DD" - } -@market.get('/getcommodityname', status_code=200) -def commodity(marketname:str,db:Session=Depends(get_db)): - comm_names = [] - comm_query = db.execute("""SELECT DISTINCT "CommName" FROM public.tbl_market_yard_day_prices WHERE LOWER("YardName")='"""+marketname.lower()+"""' ORDER BY "CommName" ASC """).fetchall() - db.close() - for i in comm_query: - comm_names.append(i[0]) - if comm_names: - return {"code": 200, "commodity_names": comm_names} - else: - return {"code": 404, "commodity_names": comm_names} - -@market.get('/getvarietyname', status_code=200) -def get_varity_name(commodity:str,marketname:str, db:Session=Depends(get_db)): - var_names = [] - query = db.execute("""SELECT DISTINCT "VarityName" FROM public.tbl_market_yard_day_prices - WHERE "CommName"='"""+commodity+"""' AND LOWER("YardName")='"""+marketname.lower()+"""' ORDER BY "VarityName" ASC """).fetchall() - db.close() - for i in query: - var_names.append([i[0]]) - return {"code": 200, "varity_name": var_names} - -@market.post('/getmarketyardtrend', status_code=200) -def get_trend(details:GetMarketCommTrend, db:Session=Depends(get_db)): - market_trend = [] - sql = db.execute("""SELECT EXTRACT(EPOCH FROM TO_DATE("DDate", 'YYYY-MM-DD'))*1000 as Unix, "Arrivals", "Minimum", "Maximum" - FROM public.tbl_market_yard_day_prices - WHERE "DDate" BETWEEN '"""+details.startdate+"""' AND '"""+details.enddate+"""' - AND LOWER("YardName") ='"""+details.name.lower()+"""' AND LOWER("CommName") ='"""+details.commodity.lower()+"""' - AND LOWER("VarityName") = '"""+details.varity.lower()+"""' - GROUP BY Unix, "Arrivals", "Minimum", "Maximum" ;""").fetchall() - db.close() - - if details.parameter == "Arrivals": - for row in sql: - unix = row[0] - arrivals = row[1] - market_trend.append([unix, arrivals]) - return {'code': 200, 'trend': market_trend} - elif details.parameter == "Minimum": - for row in sql: - unix = row[0] - min = row[2] - market_trend.append([unix, min]) - return {'code': 200, 'trend': market_trend} - elif details.parameter == "Maximum": - for row in sql: - unix = row[0] - max = row[3] - market_trend.append([unix, max]) - return {'code': 200, 'trend': market_trend} - elif sql == []: - return { - 'code': 404, - "message": "Selected name or commodity not found"} - else: - return {'code': 404, - 'message': "Selected parameter not found"} \ No newline at end of file diff --git a/src/api/routes/parameter.py b/src/api/routes/parameter.py deleted file mode 100644 index e026de3f..00000000 --- a/src/api/routes/parameter.py +++ /dev/null @@ -1,23 +0,0 @@ -import configparser -from fastapi import APIRouter -from fastapi import FastAPI, Depends,File, UploadFile,Form,status,HTTPException -from sqlalchemy.orm import Session -from sqlalchemy.sql.expression import true -from db.database import get_db -from models.index import Parameter - - -parameter=APIRouter() - - -@parameter.get("/availabledates/{parameter}") -async def get_avilable_dates(parameter,db:Session=Depends(get_db)): - availabledates=db.query(Parameter.available_date).filter(Parameter.parameter_name==parameter).order_by(Parameter.available_date).all() - db.close() - return { - "code":200, - "available_dates":availabledates - } - - - diff --git a/src/api/routes/trend.py b/src/api/routes/trend.py deleted file mode 100644 index 3702692a..00000000 --- a/src/api/routes/trend.py +++ /dev/null @@ -1,147 +0,0 @@ - -import os -import configparser -from boto3.session import Session -from fastapi.responses import FileResponse -from fastapi import APIRouter,File, UploadFile,Request,Depends -from pydantic import BaseModel -import json -from sqlalchemy import and_ -from pydantic.types import FilePath -from sqlalchemy.sql.elements import Null -from sqlalchemy.sql.expression import null -import rasterio -from botocore import UNSIGNED -from botocore.client import Config -from rasterio.session import AWSSession -from rasterstats import zonal_stats, point_query -from db.database import get_db -from models.index import Parameter -from datetime import datetime -import time -from shapely.geometry import shape -from schemas.index import Gettrend - -config = configparser.ConfigParser() -config.read('config/config.ini') -AWS_ACCESS_KEY = config['AWS']['ACCESSKEY'] -AWS_SECRET_KEY = config['AWS']['SECRETKEY'] -PARAMETER_PATH = config['azureblob']['Filepath'] - -trend=APIRouter() - -def toUnix(datestring): - unixtime=time.mktime(datetime.strptime(datestring,'%d-%m-%Y').timetuple()) - return int(unixtime*1000) -def getcentroid(polygon_feature): - """ - Function for getting centroid of a polygon feature - Parameters - polygon_feature - Polygon feture object from the geojson - """ - polygon_shape=shape(polygon_feature) - centrod_of_polygon=polygon_shape.centroid - return(centrod_of_polygon) - -class Layer(BaseModel): - layerdate:str -# @trend.get('/gettrend', status_code=200) -# async def get_trend(geojson:str, -# parameter:str, -# startdate:str, -# enddate:str, -# db:Session=Depends(get_db)): -# format="%Y-%m-%d" -# try: -# geom=json.loads(geojson, strict=False) -# except ValueError: -# return { -# "message":"Please provide a valid geojson geometry" -# } -# try: -# datetime.strptime(startdate, format) -# datetime.strptime(enddate, format) -# except ValueError: -# return { -# "message":"start date and end date in should be YYYY-MM-DD" -# } -# availabledates=db.query(Parameter.available_date).filter( -# and_(Parameter.parameter_name==parameter,Parameter.available_date.between( -# str(startdate),str(enddate) -# ))).order_by(Parameter.available_date).all() -# if(len(availabledates)<1): -# return { -# 'code':404, -# 'message':"No data available for the given date range" -# } -# else: -# session = Session(aws_access_key_id=AWS_ACCESS_KEY, -# aws_secret_access_key=AWS_SECRET_KEY) -# zstats=[] -# with rasterio.Env(AWSSession(session)) as env: -# for i in availabledates: -# filedate = datetime.strptime(str(i.available_date), '%Y-%m-%d').strftime('%d-%m-%Y') -# file_path='s3://undp-dataforpolicy/parameters/'+parameter+'/RASTER/'+str(filedate)+'.tif' -# stats = zonal_stats(geom, -# file_path, -# stats=['mean','count']) -# if(stats[0]['count']==0): -# pointvalue=point_query(getcentroid(geom),file_path) -# try: -# zstats.append([toUnix(filedate),round(pointvalue[0],2)]) -# except TypeError: -# return { -# "message":"Data not available plase draw inside telangana" -# } -# else: -# zstats.append([toUnix(filedate),round(stats[0]['mean'],2)]) -# return { -# 'code':200, -# 'trend':zstats -# } - -@trend.post('/gettrend', status_code=200) -async def get_trend(details:Gettrend,db:Session=Depends(get_db)): - format="%Y-%m-%d" - try: - datetime.strptime(details.startdate, format) - datetime.strptime(details.enddate, format) - except ValueError: - return { - "message":"start date and end date in should be YYYY-MM-DD" - } - availabledates=db.query(Parameter.available_date).filter( - and_(Parameter.parameter_name==details.parameter,Parameter.available_date.between( - str(details.startdate),str(details.enddate) - ))).order_by(Parameter.available_date).all() - db.close() - if(len(availabledates)<1): - return { - 'code':404, - 'message':"No data available for the given date range" - } - else: - zstats=[] - for i in availabledates: - filedate = datetime.strptime(str(i.available_date), '%Y-%m-%d').strftime('%d-%m-%Y') - file_path=PARAMETER_PATH+details.parameter+'/RASTER/'+str(filedate)+'.tif' - stats = zonal_stats(details.geojson, - file_path, - stats=['mean','count','sum']) - if(stats[0]['count']==0): - pointvalue=point_query(getcentroid(details.geojson),file_path) - if(pointvalue[0] is None): - zstats.append([toUnix(filedate),None]) - else: - zstats.append([toUnix(filedate),round(pointvalue[0],2)]) - else: - if(details.parameter=='POPULATION'): - zstats.append([toUnix(filedate),round(stats[0]['sum'],2)]) - else: - zstats.append([toUnix(filedate),round(stats[0]['mean'],2)]) - - - return { - 'code':200, - 'trend':zstats - } diff --git a/src/api/routes/usecase.py b/src/api/routes/usecase.py deleted file mode 100644 index 28d3ea70..00000000 --- a/src/api/routes/usecase.py +++ /dev/null @@ -1,74 +0,0 @@ -import configparser -import uuid -from fastapi import APIRouter -from fastapi import FastAPI, Depends,File, UploadFile,Form,status,HTTPException -from sqlalchemy.orm import Session -from sqlalchemy.sql.expression import true -from schemas.index import CreateUsecase,OutputUsecase -from db.database import get_db -from models.index import Job,Usecase -from fastapi_pagination import LimitOffsetPage, Page, add_pagination,paginate - - -usecase=APIRouter() - -@usecase.post("/addusecase") -def create( - project_name:str = Form(...), - project_type:str = Form(...), - short_description:str = Form(...), - long_description:str = Form(...), - url:str = Form(...), - image:UploadFile = File(...), - username:str = Form(...), - email_id:str = Form(...), - db: Session = Depends(get_db)): - random_id=uuid.uuid1() - file_name_to_store=project_name+'-'+str(random_id.hex)+'-'+image.filename - file_name_to_store=file_name_to_store.replace(" ", "") - to_create = Usecase( - project_name=project_name, - project_type=project_type, - short_description=short_description, - long_description=long_description, - url=url, - image=file_name_to_store, - username=username, - email_id=email_id, - approved=True - ) - db.add(to_create) - db.commit() - file_location = f"./static/{file_name_to_store}" - with open(file_location, "wb+") as file_object: - file_object.write(image.file.read()) - file_object.close() - return { - "success": True, - "created_id": to_create.id - } - -# Read all usecases with pagination -@usecase.get("/usecases",response_model=Page[OutputUsecase]) -@usecase.get("/usecases/limit-offset",response_model=LimitOffsetPage[OutputUsecase]) -async def get_usecase(db: Session = Depends(get_db)): - return paginate(db.query(Usecase).filter(Usecase.approved==True).all()) -add_pagination(usecase) - -# Read usecases by id -@usecase.get("/usecases/{id}") -async def get_usecase_id(id,db:Session=Depends(get_db)): - usecases=db.query(Usecase).filter(Usecase.id==id).first() - if not usecases: - raise HTTPException(status.HTTP_404_NOT_FOUND, detail=f'usecase with {id} is not available') - return{ - "code":200, - "usecase":usecases - } - - - - - - - diff --git a/src/api/routes/userdownload.py b/src/api/routes/userdownload.py deleted file mode 100644 index c617ab2c..00000000 --- a/src/api/routes/userdownload.py +++ /dev/null @@ -1,172 +0,0 @@ -import botocore -import json -import os -import configparser -import boto3 -from boto3.session import Session -from fastapi.responses import FileResponse -from fastapi import APIRouter, Depends -from db.database import get_db -from models.index import Downloads,Downloadables -from azure.storage.blob import BlobClient -from datetime import datetime -from schemas.index import Getparam -from fastapi.responses import StreamingResponse -import uuid - - - -config = configparser.ConfigParser() -config.read('config/config.ini') -AWS_ACCESS_KEY = config['AWS']['ACCESSKEY'] -AWS_SECRET_KEY = config['AWS']['SECRETKEY'] -S3_BUCKET = config['s3bucket']['BucketName'] -TEMP_FILE_PATH = config['paths']['Temporaryfiles'] -AZURE_ACCOUNT_URL=config['azureblob']['Accounturl'] -CONTAINER_NAME=config['azureblob']['Containername'] - -download = APIRouter() - - -# @download.get('/downloadraster', status_code=200) -# async def download_rasterdata( -# parameter: str, -# date: str, -# name: str, -# email: str, -# usage_type: str, -# purpose: str, -# db: Session = Depends(get_db) -# ): -# filedate = datetime.strptime(date, '%Y-%m-%d').strftime('%d-%m-%Y') -# file_path = 'parameters/'+str(parameter)+'/RASTER/'+filedate+'.tif' -# print(file_path) -# try: -# blob = BlobClient(account_url=AZURE_ACCOUNT_URL, -# container_name=CONTAINER_NAME, -# blob_name=str(file_path) -# ) -# local_file_name = str(TEMP_FILE_PATH)+parameter + \ -# "_"+filedate+"_RASTER.tif" -# with open(str(local_file_name), "wb") as f: -# data = blob.download_blob() -# data.readinto(f) -# f.close() -# blob.close() -# to_create = Downloads( -# layername=parameter, -# type='RASTER', -# parameterdate=str(date), -# region="", -# name=name, -# email=email, -# usage_type=usage_type, -# purpose=purpose -# ) -# db.add(to_create) -# db.commit() -# return FileResponse(local_file_name) -# except: -# return{ -# 'code':404, -# 'message':"No file found" -# } - - - -# @download.get('/downloadvector', status_code=200) -# async def download_vectordata( -# parameter: str, -# date: str, -# name: str, -# email: str, -# usage_type: str, -# purpose: str, -# region:str, -# db: Session = Depends(get_db) -# ): -# filedate = datetime.strptime(date, '%Y-%m-%d').strftime('%d-%m-%Y') -# if(region=='MANDAL'): -# file_path = 'parameters/'+str(parameter)+'/VECTOR/'+region+"/"+filedate+'.geojson' -# elif(region=='DISTRICT'): -# file_path = 'parameters/'+str(parameter)+'/VECTOR/'+region+"/"+filedate+'.geojson' -# local_file_name = str(TEMP_FILE_PATH)+parameter + \ -# "_"+filedate+"VECTOR.geojson" -# try: -# blob = BlobClient(account_url=AZURE_ACCOUNT_URL, -# container_name=CONTAINER_NAME, -# blob_name=str(file_path) -# ) -# with open(str(local_file_name), "wb") as f: -# data = blob.download_blob() -# data.readinto(f) -# f.close() -# blob.close() -# to_create = Downloads( -# layername=parameter, -# type='VECTOR', -# parameterdate=str(date), -# region=str(region), -# name=name, -# email=email, -# usage_type=usage_type, -# purpose=purpose -# ) -# db.add(to_create) -# db.commit() -# return FileResponse(local_file_name) -# except: -# return{ -# 'code':404, -# 'message':"No file found" -# } -@download.get('/getfilenames', status_code=200) -async def getdownloadables(parameter: str,db: Session = Depends(get_db)): - filenames=db.query(Downloadables.filename_on_blob).filter(Downloadables.parameter==parameter).order_by(Downloadables.id).all() - db.close() - return {'code':200, - 'available_files':filenames} -@download.get('/downloadfile',status_code=200) -async def downloads( - parameter: str, - filename: str, - name: str, - email: str, - usage_type: str, - purpose: str, - region:str, - db: Session = Depends(get_db)): - random_id=uuid.uuid1() - file_path = 'parameters/'+str(parameter)+'/DOWNLOADS/'+filename+'.zip' - local_file_name = str(TEMP_FILE_PATH)+parameter + \ - "_"+str(random_id.hex)+"file.zip" - print(local_file_name) - try: - blob = BlobClient(account_url=AZURE_ACCOUNT_URL, - container_name=CONTAINER_NAME, - blob_name=str(file_path) - ) - with open(str(local_file_name), "wb") as f: - data = blob.download_blob() - data.readinto(f) - f.close() - blob.close() - to_create = Downloads( - layername=parameter, - type='ZIP', - parameterdate=str('2022-01-01'), - region=str(region), - name=name, - email=email, - usage_type=usage_type, - purpose=purpose - ) - db.add(to_create) - db.commit() - return FileResponse(local_file_name,filename=parameter+'.zip') - except: - return{ - 'code':404, - 'message':"No file found" - } - diff --git a/src/api/routes/vector.py b/src/api/routes/vector.py deleted file mode 100644 index abdee91e..00000000 --- a/src/api/routes/vector.py +++ /dev/null @@ -1,45 +0,0 @@ -import json -import os -import configparser -import boto3 -from boto3.session import Session -from fastapi.responses import ORJSONResponse -from fastapi import APIRouter,File, UploadFile - - - -config = configparser.ConfigParser() -config.read('config/config.ini') -AWS_ACCESS_KEY = config['AWS']['ACCESSKEY'] -AWS_SECRET_KEY = config['AWS']['SECRETKEY'] -S3_BUCKET = config['s3bucket']['BucketName'] -TEMP_FILE_PATH=config['paths']['Temporaryfiles'] - -vector=APIRouter() -@vector.get('/getvector',response_class=ORJSONResponse, status_code=200) -async def get_vector(Administrative_boundary:str=None): - if Administrative_boundary == "District": - BUCKET = 'undp-dataforpolicy' - FILE_TO_READ = 'parameters/NDVI/VECTOR/DISTRICT/NDVI_2021_01_01.geojson' - client = boto3.client('s3', - aws_access_key_id=AWS_ACCESS_KEY, - aws_secret_access_key=AWS_SECRET_KEY - ) - result = client.get_object(Bucket=BUCKET, Key=FILE_TO_READ) - text = result["Body"].read().decode() - jsonobj=json.loads(text) - return {'code':200, - 'data':jsonobj} - - elif Administrative_boundary == "Mandal": - BUCKET = 'undp-dataforpolicy' - FILE_TO_READ = 'parameters/NDVI/VECTOR/MANDAL/NDVI_2021_02_02.geojson' - client = boto3.client('s3', - aws_access_key_id=AWS_ACCESS_KEY, - aws_secret_access_key=AWS_SECRET_KEY - ) - result = client.get_object(Bucket=BUCKET, Key=FILE_TO_READ) - text = result["Body"].read().decode() - jsonobj=json.loads(text) - return {'code':200, - 'data':jsonobj} \ No newline at end of file diff --git a/src/api/routes/warehouse.py b/src/api/routes/warehouse.py deleted file mode 100644 index a573a600..00000000 --- a/src/api/routes/warehouse.py +++ /dev/null @@ -1,53 +0,0 @@ -from tkinter import W -from fastapi import APIRouter, Depends, FastAPI -import json -import psycopg2 -from schemas.index import GetMarketDateRange -from datetime import datetime -import time -from boto3.session import Session -from db.database import get_db -from sqlalchemy import func -from sqlalchemy.sql import text -from models.index import Warehouse -from geoalchemy2 import Geometry -from datetime import date, timedelta, datetime - -warehouse = APIRouter() -@warehouse.get('/warehouses', status_code=200) -def get_warehouses(db:Session=Depends(get_db)): - data = [] - warehouse_result = db.query( - Warehouse.capacity, - Warehouse.district, - Warehouse.latitude, - Warehouse.longitude, - Warehouse.occupancy, - Warehouse.region, - Warehouse.status, - Warehouse.vacancy, - Warehouse.warehouse, - Warehouse.wh_type - ).all() - db.close() - for row in warehouse_result: - property = {"capacity": row[0], "district": row[1], "latitude": row[2], \ - "longitude": row[3], "occupancy": row[4],"region":row[5], \ - "status":row[6],"vacancy":row[7],"warehouse":row[8],"wh_type":row[9]} - data.append(property) - geojson = { - "type": "FeatureCollection", - "features": [ - { - "type": "Feature", - "geometry": { - "type": "Point", - "coordinates": [float(d["longitude"]), float(d["latitude"])], - }, - "properties": d, - } for d in data] - } - return{ - 'code':200, - 'data':geojson - } diff --git a/src/api/routes/weatherdata.py b/src/api/routes/weatherdata.py deleted file mode 100644 index d24c1022..00000000 --- a/src/api/routes/weatherdata.py +++ /dev/null @@ -1,89 +0,0 @@ -import configparser -from logging import exception -from fastapi import APIRouter -from fastapi import FastAPI, Depends -from sqlalchemy.orm import Session -from sqlalchemy.sql.expression import true -from schemas.index import Getweather,Returnweather -from db.database import get_db -from models.index import Weather -from itertools import groupby -from fastapi_pagination import LimitOffsetPage, Page, add_pagination,paginate -import itertools -from operator import itemgetter -import json -import decimal, datetime - - -from pydantic import BaseModel - - -weather= APIRouter() - -@weather.post('/getweather', status_code=200) -async def get_weathertrend(details:Getweather,db:Session=Depends(get_db)): - try: - query="SELECT DISTINCT extract(epoch from data_date)*1000 as unix,"+details.parameter+"::FLOAT FROM tbl_weather WHERE data_date BETWEEN '"+details.start_date+"' AND '"+details.end_date+"' AND district='"+details.district+"' AND mandal='"+details.mandal+"'" - data=db.execute(query) - results = [list(row) for row in data] - db.close() - return{ - 'code':200, - 'trend':results - } - except: - return{ - "message":"Error occured please provide valid parameters" - } -@weather.post('/getweathertabular', status_code=200) -async def get_weathertrend(details:Getweather,db:Session=Depends(get_db)): - try: - query="SELECT data_date,"+details.parameter+"::FLOAT FROM tbl_weather WHERE data_date BETWEEN '"+details.start_date+"' AND '"+details.end_date+"' AND district='"+details.district+"' AND mandal='"+details.mandal+"'" - data=db.execute(query) - results = [list(row) for row in data] - db.close() - return{ - 'code':200, - 'trend':results - } - except: - return{ - "message":"Error occured please provide valid parameters" - } -@weather.get('/weatherparameter',status_code=200) -async def get_weather_parameter(): - return{ - 'code':200, - 'parameters':[ - { - 'parameter':'rain', - 'unit':'mm' - }, - { - 'parameter':'min_temp', - 'unit':'°C' - }, - { - 'parameter':'max_temp', - 'unit':'°C' - }, - { - 'parameter':'min_humidity', - 'unit':'%' - }, - { - 'parameter':'max_humidity', - 'unit':'%' - }, - { - 'parameter':'min_wind_speed', - 'unit':'kmph' - }, - { - 'parameter':'max_wind_speed', - 'unit':'kmph' - }, - - ] - } - \ No newline at end of file diff --git a/src/api/runtime.txt b/src/api/runtime.txt new file mode 100644 index 00000000..f96c0fa0 --- /dev/null +++ b/src/api/runtime.txt @@ -0,0 +1 @@ +python-3.8.10 \ No newline at end of file diff --git a/src/api/schemas/downloadables.py b/src/api/schemas/downloadables.py deleted file mode 100644 index 62c1d289..00000000 --- a/src/api/schemas/downloadables.py +++ /dev/null @@ -1,5 +0,0 @@ -from datetime import date, datetime -from pydantic import BaseModel - -class Getparam(BaseModel): - parameter:str \ No newline at end of file diff --git a/src/api/schemas/index.py b/src/api/schemas/index.py deleted file mode 100644 index 1081d56c..00000000 --- a/src/api/schemas/index.py +++ /dev/null @@ -1,10 +0,0 @@ -from .usecase import CreateUsecase,OutputUsecase -from .layer import CreateLayer -from .trend import Gettrend -from .custom import Customstat -from .point import GetPoint, GetPointDateRange -from .weather import Getweather,Returnweather -from .customdistrict import Customdistrict -from .market_name import GetMarketDateRange,GetMarketTrend,GetMarketCommTrend -from .lulc import Getlulc,Getlulctrend -from .downloadables import Getparam \ No newline at end of file diff --git a/src/api/schemas/layer.py b/src/api/schemas/layer.py deleted file mode 100644 index 82e4139a..00000000 --- a/src/api/schemas/layer.py +++ /dev/null @@ -1,28 +0,0 @@ -from datetime import date, datetime -from pydantic import BaseModel - -class CreateLayer(BaseModel): - layer_name: str - short_description: str - long_description:str - source:str - url:str - unit:str - color:str - update_frequnecy:int - last_updated:datetime - raster_status:bool - vector_status:bool - multiple_files:bool - display_name:str - category:str - isavailable:bool - citation:str - standards:str - timerangefilter:bool - showcustom:bool - datafromvector:bool - class Config: - orm_mode = True - - \ No newline at end of file diff --git a/src/api/schemas/market_name.py b/src/api/schemas/market_name.py deleted file mode 100644 index 31dd65b8..00000000 --- a/src/api/schemas/market_name.py +++ /dev/null @@ -1,20 +0,0 @@ -from pydantic import BaseModel -from pydantic.types import Json,Dict, List - -class GetMarketDateRange(BaseModel): - startdate:str - enddate:str - name:str -class GetMarketTrend(BaseModel): - startdate:str - enddate:str - name:str - parameter:str - -class GetMarketCommTrend(BaseModel): - startdate:str - enddate:str - name:str - commodity:str - parameter:str - varity:str \ No newline at end of file diff --git a/src/api/schemas/weather.py b/src/api/schemas/weather.py deleted file mode 100644 index ca5b11ee..00000000 --- a/src/api/schemas/weather.py +++ /dev/null @@ -1,15 +0,0 @@ -from datetime import date, datetime -from pydantic import BaseModel - - -class Getweather(BaseModel): - district: str - mandal: str - parameter:str - start_date: str - end_date: str - -class Returnweather(BaseModel): - district:str - mandal:str - \ No newline at end of file