├── DFS1.tif ├── GEBCO1.tif ├── Reclass_Geol11.tif ├── Reclass_Soil11.tif ├── Reclass_Weig11.tif ├── Reclass_dem21.tif ├── reclass_slop11.tif ├── Overall Suitablity1.tif ├── Reclass_Rainfall_11.tif ├── Reclass LanduseLandcover1.tif ├── Reclass LanduseLandcover2.tif ├── Dam1py.txt ├── Dam identify code.py ├── README.md └── Reclass1_Dissolve_Fe.json /DFS1.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Akajiaku11/Identifying-Suitable-Dam-Sites-Using-Geospatial-Data-and-Machine-Learning/HEAD/DFS1.tif -------------------------------------------------------------------------------- /GEBCO1.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Akajiaku11/Identifying-Suitable-Dam-Sites-Using-Geospatial-Data-and-Machine-Learning/HEAD/GEBCO1.tif -------------------------------------------------------------------------------- /Reclass_Geol11.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Akajiaku11/Identifying-Suitable-Dam-Sites-Using-Geospatial-Data-and-Machine-Learning/HEAD/Reclass_Geol11.tif -------------------------------------------------------------------------------- /Reclass_Soil11.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Akajiaku11/Identifying-Suitable-Dam-Sites-Using-Geospatial-Data-and-Machine-Learning/HEAD/Reclass_Soil11.tif -------------------------------------------------------------------------------- /Reclass_Weig11.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Akajiaku11/Identifying-Suitable-Dam-Sites-Using-Geospatial-Data-and-Machine-Learning/HEAD/Reclass_Weig11.tif -------------------------------------------------------------------------------- /Reclass_dem21.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Akajiaku11/Identifying-Suitable-Dam-Sites-Using-Geospatial-Data-and-Machine-Learning/HEAD/Reclass_dem21.tif -------------------------------------------------------------------------------- /reclass_slop11.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Akajiaku11/Identifying-Suitable-Dam-Sites-Using-Geospatial-Data-and-Machine-Learning/HEAD/reclass_slop11.tif -------------------------------------------------------------------------------- /Overall Suitablity1.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Akajiaku11/Identifying-Suitable-Dam-Sites-Using-Geospatial-Data-and-Machine-Learning/HEAD/Overall Suitablity1.tif -------------------------------------------------------------------------------- /Reclass_Rainfall_11.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Akajiaku11/Identifying-Suitable-Dam-Sites-Using-Geospatial-Data-and-Machine-Learning/HEAD/Reclass_Rainfall_11.tif -------------------------------------------------------------------------------- /Reclass LanduseLandcover1.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Akajiaku11/Identifying-Suitable-Dam-Sites-Using-Geospatial-Data-and-Machine-Learning/HEAD/Reclass LanduseLandcover1.tif -------------------------------------------------------------------------------- /Reclass LanduseLandcover2.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Akajiaku11/Identifying-Suitable-Dam-Sites-Using-Geospatial-Data-and-Machine-Learning/HEAD/Reclass LanduseLandcover2.tif -------------------------------------------------------------------------------- /Dam1py.txt: -------------------------------------------------------------------------------- 1 | import rasterio 2 | import geopandas as gpd 3 | import numpy as np 4 | import pandas as pd 5 | from rasterio.plot import show 6 | from sklearn.svm import SVC 7 | from sklearn.model_selection import train_test_split 8 | from sklearn.metrics import accuracy_score, confusion_matrix 9 | from scipy.stats import zscore 10 | 11 | # Define paths for datasets 12 | DEM_PATH = 'data/srtm_dem.tif' 13 | SLOPE_PATH = 'data/slope.tif' 14 | STREAM_ORDER_PATH = 'data/stream_order.tif' 15 | LANDCOVER_PATH = 'data/landcover.tif' 16 | RAINFALL_PATH = 'data/rainfall.tif' 17 | SOIL_PATH = 'data/soil_data.tif' 18 | GEOLOGY_PATH = 'data/geology_data.tif' 19 | 20 | # Load raster data 21 | def load_raster(file_path): 22 | with rasterio.open(file_path) as src: 23 | return src.read(1), src.meta 24 | 25 | # Preprocess raster data 26 | def preprocess_raster(data): 27 | """ Normalize data and handle no data values """ 28 | data = np.where(data == -9999, np.nan, data) # Replace no data value 29 | return np.nan_to_num((data - np.nanmin(data)) / (np.nanmax(data) - np.nanmin(data))) 30 | 31 | # Load and preprocess all criteria 32 | dem, dem_meta = load_raster(DEM_PATH) 33 | dem = preprocess_raster(dem) 34 | 35 | slope, _ = load_raster(SLOPE_PATH) 36 | slope = preprocess_raster(slope) 37 | 38 | stream_order, _ = load_raster(STREAM_ORDER_PATH) 39 | stream_order = preprocess_raster(stream_order) 40 | 41 | landcover, _ = load_raster(LANDCOVER_PATH) 42 | landcover = preprocess_raster(landcover) 43 | 44 | rainfall, _ = load_raster(RAINFALL_PATH) 45 | rainfall = preprocess_raster(rainfall) 46 | 47 | soil, _ = load_raster(SOIL_PATH) 48 | soil = preprocess_raster(soil) 49 | 50 | geology, _ = load_raster(GEOLOGY_PATH) 51 | geology = preprocess_raster(geology) 52 | 53 | # Combine criteria layers into a DataFrame 54 | criteria = { 55 | 'elevation': dem.flatten(), 56 | 'slope': slope.flatten(), 57 | 'stream_order': stream_order.flatten(), 58 | 'landcover': landcover.flatten(), 59 | 'rainfall': rainfall.flatten(), 60 | 'soil': soil.flatten(), 61 | 'geology': geology.flatten(), 62 | } 63 | 64 | criteria_df = pd.DataFrame(criteria) 65 | criteria_df.dropna(inplace=True) 66 | 67 | # Assign AHP weights (example weights from your study) 68 | weights = { 69 | 'elevation': 0.13, 70 | 'slope': 0.21, 71 | 'stream_order': 0.34, 72 | 'landcover': 0.08, 73 | 'rainfall': 0.14, 74 | 'soil': 0.05, 75 | 'geology': 0.05 76 | } 77 | 78 | # Weighted Sum Model for suitability 79 | criteria_df['suitability_score'] = ( 80 | criteria_df['elevation'] * weights['elevation'] + 81 | criteria_df['slope'] * weights['slope'] + 82 | criteria_df['stream_order'] * weights['stream_order'] + 83 | criteria_df['landcover'] * weights['landcover'] + 84 | criteria_df['rainfall'] * weights['rainfall'] + 85 | criteria_df['soil'] * weights['soil'] + 86 | criteria_df['geology'] * weights['geology'] 87 | ) 88 | 89 | # Normalize suitability score 90 | criteria_df['suitability_score'] = zscore(criteria_df['suitability_score']) 91 | 92 | # Prepare data for SVM classification 93 | X = criteria_df.drop(columns=['suitability_score']) 94 | y = np.where(criteria_df['suitability_score'] > 0.5, 1, 0) # Threshold suitability 95 | 96 | X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) 97 | 98 | # Apply SVM for classification 99 | svm_model = SVC(kernel='rbf', C=1, gamma='auto') 100 | svm_model.fit(X_train, y_train) 101 | y_pred = svm_model.predict(X_test) 102 | 103 | # Validate the model 104 | accuracy = accuracy_score(y_test, y_pred) 105 | conf_matrix = confusion_matrix(y_test, y_pred) 106 | print("Model Accuracy:", accuracy) 107 | print("Confusion Matrix:\n", conf_matrix) 108 | 109 | # Save suitability map back to raster format 110 | def save_raster(output_path, data, meta): 111 | meta.update(dtype='float32', count=1) 112 | with rasterio.open(output_path, 'w', **meta) as dst: 113 | dst.write(data, 1) 114 | 115 | # Reshape suitability scores to original raster shape 116 | suitability_map = criteria_df['suitability_score'].values.reshape(dem.shape) 117 | save_raster('output/suitability_map.tif', suitability_map, dem_meta) 118 | print("Suitability map saved successfully.") 119 | -------------------------------------------------------------------------------- /Dam identify code.py: -------------------------------------------------------------------------------- 1 | import rasterio 2 | import geopandas as gpd 3 | import numpy as np 4 | import pandas as pd 5 | from rasterio.plot import show 6 | from sklearn.svm import SVC 7 | from sklearn.model_selection import train_test_split 8 | from sklearn.metrics import accuracy_score, confusion_matrix 9 | from scipy.stats import zscore 10 | 11 | # Define paths for datasets 12 | DEM_PATH = 'data/srtm_dem.tif' 13 | SLOPE_PATH = 'data/slope.tif' 14 | STREAM_ORDER_PATH = 'data/stream_order.tif' 15 | LANDCOVER_PATH = 'data/landcover.tif' 16 | RAINFALL_PATH = 'data/rainfall.tif' 17 | SOIL_PATH = 'data/soil_data.tif' 18 | GEOLOGY_PATH = 'data/geology_data.tif' 19 | 20 | # Load raster data 21 | def load_raster(file_path): 22 | with rasterio.open(file_path) as src: 23 | return src.read(1), src.meta 24 | 25 | # Preprocess raster data 26 | def preprocess_raster(data): 27 | """ Normalize data and handle no data values """ 28 | data = np.where(data == -9999, np.nan, data) # Replace no data value 29 | return np.nan_to_num((data - np.nanmin(data)) / (np.nanmax(data) - np.nanmin(data))) 30 | 31 | # Load and preprocess all criteria 32 | dem, dem_meta = load_raster(DEM_PATH) 33 | dem = preprocess_raster(dem) 34 | 35 | slope, _ = load_raster(SLOPE_PATH) 36 | slope = preprocess_raster(slope) 37 | 38 | stream_order, _ = load_raster(STREAM_ORDER_PATH) 39 | stream_order = preprocess_raster(stream_order) 40 | 41 | landcover, _ = load_raster(LANDCOVER_PATH) 42 | landcover = preprocess_raster(landcover) 43 | 44 | rainfall, _ = load_raster(RAINFALL_PATH) 45 | rainfall = preprocess_raster(rainfall) 46 | 47 | soil, _ = load_raster(SOIL_PATH) 48 | soil = preprocess_raster(soil) 49 | 50 | geology, _ = load_raster(GEOLOGY_PATH) 51 | geology = preprocess_raster(geology) 52 | 53 | # Combine criteria layers into a DataFrame 54 | criteria = { 55 | 'elevation': dem.flatten(), 56 | 'slope': slope.flatten(), 57 | 'stream_order': stream_order.flatten(), 58 | 'landcover': landcover.flatten(), 59 | 'rainfall': rainfall.flatten(), 60 | 'soil': soil.flatten(), 61 | 'geology': geology.flatten(), 62 | } 63 | 64 | criteria_df = pd.DataFrame(criteria) 65 | criteria_df.dropna(inplace=True) 66 | 67 | # Assign AHP weights (example weights from your study) 68 | weights = { 69 | 'elevation': 0.13, 70 | 'slope': 0.21, 71 | 'stream_order': 0.34, 72 | 'landcover': 0.08, 73 | 'rainfall': 0.14, 74 | 'soil': 0.05, 75 | 'geology': 0.05 76 | } 77 | 78 | # Weighted Sum Model for suitability 79 | criteria_df['suitability_score'] = ( 80 | criteria_df['elevation'] * weights['elevation'] + 81 | criteria_df['slope'] * weights['slope'] + 82 | criteria_df['stream_order'] * weights['stream_order'] + 83 | criteria_df['landcover'] * weights['landcover'] + 84 | criteria_df['rainfall'] * weights['rainfall'] + 85 | criteria_df['soil'] * weights['soil'] + 86 | criteria_df['geology'] * weights['geology'] 87 | ) 88 | 89 | # Normalize suitability score 90 | criteria_df['suitability_score'] = zscore(criteria_df['suitability_score']) 91 | 92 | # Prepare data for SVM classification 93 | X = criteria_df.drop(columns=['suitability_score']) 94 | y = np.where(criteria_df['suitability_score'] > 0.5, 1, 0) # Threshold suitability 95 | 96 | X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) 97 | 98 | # Apply SVM for classification 99 | svm_model = SVC(kernel='rbf', C=1, gamma='auto') 100 | svm_model.fit(X_train, y_train) 101 | y_pred = svm_model.predict(X_test) 102 | 103 | # Validate the model 104 | accuracy = accuracy_score(y_test, y_pred) 105 | conf_matrix = confusion_matrix(y_test, y_pred) 106 | print("Model Accuracy:", accuracy) 107 | print("Confusion Matrix:\n", conf_matrix) 108 | 109 | # Save suitability map back to raster format 110 | def save_raster(output_path, data, meta): 111 | meta.update(dtype='float32', count=1) 112 | with rasterio.open(output_path, 'w', **meta) as dst: 113 | dst.write(data, 1) 114 | 115 | # Reshape suitability scores to original raster shape 116 | suitability_map = criteria_df['suitability_score'].values.reshape(dem.shape) 117 | save_raster('output/suitability_map.tif', suitability_map, dem_meta) 118 | print("Suitability map saved successfully.") 119 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Identifying Suitable Dam Sites Using Geospatial Data and Machine Learning 2 | 3 | ## Overview 4 | This study presents a comprehensive approach to identifying optimal dam sites along the Katsina-Ala River in Benue State, Nigeria, by integrating **Geospatial Data** and **Machine Learning** with Multi-Criteria Decision Analysis (MCDA). The methodology combines advanced geospatial analysis tools, machine learning algorithms, and the Analytic Hierarchy Process (AHP) to determine suitable locations for dam infrastructure. 5 | 6 | ## Objective 7 | The primary goal of this study is to develop a **robust decision-making tool** for selecting suitable dam sites based on environmental, topographic, and hydrological criteria, ensuring sustainable water resource management and infrastructure development. 8 | 9 | --- 10 | 11 | ## Key Features 12 | - **Data Integration:** Utilization of diverse geospatial datasets: 13 | - **Shuttle Radar Topography Mission (SRTM) DEM** for elevation and slope data. 14 | - **Sentinel-2 Imagery** for land use/land cover classification. 15 | - **General Bathymetric Chart of the Oceans (GEBCO)** for bathymetric insights. 16 | - **Historical Rainfall Data** for hydrological analysis. 17 | - **Multi-Criteria Decision Analysis (MCDA):** Assigning weights to suitability criteria using the **Analytic Hierarchy Process (AHP)**. 18 | - **Machine Learning:** Validation of suitability results using the **Support Vector Machine (SVM)** classifier. 19 | - **Geospatial Analysis Tools:** Use of **ArcGIS 10.5** and Python-based machine learning algorithms. 20 | 21 | --- 22 | 23 | ## Methodology 24 | The approach integrates the following steps: 25 | 1. **Data Acquisition:** Collection of geospatial data (DEM, Sentinel-2 imagery, GEBCO, and rainfall data). 26 | 2. **Pre-Processing:** Preparing and analyzing datasets in ArcGIS and Python environments. 27 | 3. **Criteria Selection:** Identification of influencing factors: 28 | - **Elevation** 29 | - **Stream Order** 30 | - **Slope** 31 | - **Distance from Stream** 32 | - **Land Use/Land Cover (LULC)** 33 | - **Rainfall** 34 | - **Soil** 35 | - **Geology** 36 | 4. **Weight Assignment:** Prioritization of criteria using the AHP method: 37 | - **Stream Order (34%)** and **Slope (21%)** are given higher weights due to their importance. 38 | 5. **Suitability Analysis:** Integration of weighted factors to generate the final suitability map. 39 | 6. **Model Validation:** Using SVM classification and expert reviews to confirm the model's robustness. 40 | 41 | --- 42 | 43 | ## Results 44 | - **Identified Sites:** Two proposed sites, **KA1** and **KA2**, were determined to be the most suitable dam locations based on the following conditions: 45 | - **Lower Elevations**: 108–151 meters. 46 | - **Flat Slopes**. 47 | - **Proximity to Streams**: ≤ 300 meters. 48 | - **High Rainfall**: 218–224 mm. 49 | - **Validation Results:** The suitability model achieved **over 80% accuracy** when compared to SVM classifications and expert reviews. 50 | - **Final Suitability Map:** A practical decision-making tool for dam construction projects. 51 | 52 | --- 53 | 54 | ## Tools & Technologies 55 | - **ArcGIS 10.5**: Geospatial data analysis and visualization. 56 | - **Python**: Machine learning implementation and data processing. 57 | - **AHP**: Weight assignment for MCDA. 58 | - **Support Vector Machine (SVM):** Model validation. 59 | 60 | --- 61 | 62 | ## Contribution 63 | This study demonstrates the potential of integrating **GIS-based MCDA**, **AHP weighting**, and **machine learning** for identifying optimal dam sites. The methodology highlights: 64 | - The role of **geospatial analysis** in environmental assessments. 65 | - The effectiveness of **machine learning** in validating suitability results. 66 | - A framework for **sustainable water resource management** in regions prone to hydrological challenges. 67 | 68 | --- 69 | 70 | ## Applications 71 | - Dam site selection for **water resource management**. 72 | - Infrastructure planning and decision-making. 73 | - Environmental and hydrological assessments using GIS and machine learning. 74 | 75 | --- 76 | 77 | ## Project Outputs 78 | - Final **Dam Suitability Map**. 79 | - Classification of suitable sites (**KA1** and **KA2**). 80 | - Model validation report using **SVM**. 81 | 82 | --- 83 | 84 | ## How to Use 85 | 1. Clone this repository: 86 | ```bash 87 | git clone https://github.com/yourusername/Identifying-Suitable-Dam-Sites-Using-Geospatial-Data-and-ML.git 88 | ``` 89 | 2. Set up the environment: 90 | - Install Python and required libraries: 91 | ```bash 92 | pip install numpy pandas scikit-learn rasterio geopandas matplotlib 93 | ``` 94 | 3. Run geospatial analysis workflows using Python scripts. 95 | 4. Load datasets into **ArcGIS 10.5** for further visualization. 96 | 5. Validate results using SVM classifiers. 97 | 98 | --- 99 | 100 | ## Authors 101 | - **[Eteh Desmond]** - Principal Researcher 102 | - **[Collaborators/Contributors]** 103 | 104 | --- 105 | 106 | ## License 107 | This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details. 108 | 109 | --- 110 | 111 | ## Acknowledgments 112 | Special thanks to the organizations and datasets that made this research possible: 113 | - **NASA** for SRTM DEM data. 114 | - **European Space Agency (ESA)** for Sentinel-2 imagery. 115 | - **GEBCO** for bathymetric data. 116 | - **Weather Agencies** for rainfall data. 117 | 118 | --- 119 | 120 | ## Contact 121 | For further inquiries, suggestions, or collaborations, please contact: 122 | - **Email**:akajiakuflowz@gmail.com 123 | - **LinkedIn**:https://github.com/Akajiaku11 124 | 125 | --- 126 | 127 | **"Harnessing the power of geospatial technology and machine learning for sustainable infrastructure development."** 128 | 129 | -------------------------------------------------------------------------------- /Reclass1_Dissolve_Fe.json: -------------------------------------------------------------------------------- 1 | {"displayFieldName":"","fieldAliases":{"OBJECTID":"OBJECTID","gridcode":"gridcode","Shape_Length":"Shape_Length","Shape_Area":"Shape_Area"},"geometryType":"esriGeometryPolygon","spatialReference":{"wkid":4326,"latestWkid":4326},"fields":[{"name":"OBJECTID","type":"esriFieldTypeOID","alias":"OBJECTID"},{"name":"gridcode","type":"esriFieldTypeInteger","alias":"gridcode"},{"name":"Shape_Length","type":"esriFieldTypeDouble","alias":"Shape_Length"},{"name":"Shape_Area","type":"esriFieldTypeDouble","alias":"Shape_Area"}],"features":[{"attributes":{"OBJECTID":2,"gridcode":2,"Shape_Length":0.72701388201093398,"Shape_Area":0.00057058897704390381},"geometry":{"rings":[[[9.3819031828993502,7.0072000431362085],[9.3832686953484199,7.0023366979552293],[9.3784053501674407,7.0037022180124495],[9.3819031828993502,7.0072000431362085]],[[9.4217920718993469,7.0072000431362085],[9.4231575843484165,7.0023366979552293],[9.4182942391674374,7.0037022180124495],[9.4217920718993469,7.0072000431362085]],[[9.3938698495993549,7.0111889320362479],[9.3952353620484246,7.0063255868552687],[9.3903720168674454,7.007691106912489],[9.3938698495993549,7.0111889320362479]],[[9.4058365162995869,7.0151778209361737],[9.4072020287486566,7.0103144757551945],[9.4023386835675069,7.0116799958125853],[9.4058365162995869,7.0151778209361737]],[[9.4297698496993121,7.0351222654362005],[9.4311353621483818,7.0302589202552213],[9.4262720169674594,7.0316244327042909],[9.4297698496993121,7.0351222654362005]],[[9.4616809532910793,7.0391111543362399],[9.4630464733486406,7.0342478091552607],[9.4581831281674908,7.0356133216041599],[9.4616809532910793,7.0391111543362399]],[[9.4696587310910445,7.0470889321362051],[9.4710242511484353,7.0422255869552828],[9.4661609059674561,7.0435910994043525],[9.4696587310910445,7.0470889321362051]],[[9.3611568795799371,7.04729032123754],[9.3633242508483931,7.0422255869552828],[9.3541510533626706,7.0438424059177009],[9.3611568795799371,7.04729032123754]],[[9.3380254049993709,7.0550667099362272],[9.3393909174484406,7.050203364755248],[9.334527570365367,7.0515688772043177],[9.3380254049993709,7.0550667099362272]],[[9.3460031827993362,7.0550667099362272],[9.3473686952484059,7.050203364755248],[9.3425053481655027,7.0515688772043177],[9.3460031827993362,7.0550667099362272]],[[9.3978587384994512,7.0550667099362272],[9.3992242509483503,7.050203364755248],[9.3943609057677122,7.0515688772043177],[9.3978587384994512,7.0550667099362272]],[[9.4120653739292948,7.0515688772043177],[9.4072020287486566,7.050203364755248],[9.4085675411973853,7.0550667099362272],[9.4120653739292948,7.0515688772043177]],[[9.4457253976911488,7.0630444877361924],[9.4470909177483691,7.0581811425552132],[9.4422275725675604,7.0595466550042829],[9.4457253976911488,7.0630444877361924]],[[9.3322875978313391,7.0647934079062793],[9.3287897631975056,7.0612955751743698],[9.327424250748436,7.0661589203551785],[9.3322875978313391,7.0647934079062793]],[[9.3659476272993629,7.0710222655361576],[9.3673131397484326,7.0661589203551785],[9.362449790763435,7.0675244328042481],[9.3659476272993629,7.0710222655361576]],[[9.349992071699603,7.0750111544361971],[9.3513575841483316,7.0701478092552748],[9.3464942351632772,7.0715133217043444],[9.349992071699603,7.0750111544361971]],[[9.3739254050993281,7.0750111544361971],[9.3752909175483978,7.0701478092552748],[9.3704275685634002,7.0715133217043444],[9.3739254050993281,7.0750111544361971]],[[9.327424250748436,7.0701478092552748],[9.3234353618483397,7.0701478092552748],[9.3254298062984731,7.0752566863243942],[9.327424250748436,7.0701478092552748]],[[9.3380254049993709,7.0829889322362192],[9.3393909174484406,7.07812558705524],[9.334527570365367,7.0794910995043097],[9.3380254049993709,7.0829889322362192]],[[9.3898809606993154,7.0829889322362192],[9.3912464731483851,7.07812558705524],[9.3863831279675765,7.0794910995043097],[9.3898809606993154,7.0829889322362192]],[[9.3433798063483664,7.0900922537552447],[9.3393909174484406,7.0900922537552447],[9.3393909174484406,7.094081142655341],[9.3433798063483664,7.094081142655341],[9.3433798063483664,7.0900922537552447]],[[9.4217920718993469,7.0949556027402991],[9.4231575843484165,7.0900922537552447],[9.4182942391674374,7.0914577662043143],[9.4217920718993469,7.0949556027402991]],[[9.4696587310910445,7.0949556027402991],[9.4710242511484353,7.0900922537552447],[9.4661609059674561,7.0914577662043143],[9.4696587310910445,7.0949556027402991]],[[9.4351242510484781,7.0980700315552667],[9.4337587385994084,7.0932066825702123],[9.4302609058674989,7.096704519106197],[9.4351242510484781,7.0980700315552667]],[[9.4098254051993422,7.0989444916402249],[9.4111909176484119,7.094081142655341],[9.4063275724674327,7.0954466551042401],[9.4098254051993422,7.0989444916402249]],[[9.4537031754911141,7.0989444916402249],[9.4550686955483343,7.094081142655341],[9.4502053503676962,7.0954466551042401],[9.4537031754911141,7.0989444916402249]],[[9.3354020285484012,7.1020589204553062],[9.3354020285484012,7.0980700315552667],[9.3302931533813762,7.1000644760051728],[9.3354020285484012,7.1020589204553062]],[[9.3354020285484012,7.1020589204553062],[9.3354020285484012,7.1060478093552319],[9.3393909174484406,7.1060478093552319],[9.3393909174484406,7.1020589204553062],[9.3354020285484012,7.1020589204553062]],[[9.3633242508483931,7.1020589204553062],[9.3593353619484674,7.1020589204553062],[9.3593353619484674,7.1060478093552319],[9.3633242508483931,7.1060478093552319],[9.3633242508483931,7.1020589204553062]],[[9.4337587385994084,7.1069222694403607],[9.4351242510484781,7.1020589204553062],[9.4302609058674989,7.1034244329043759],[9.4337587385994084,7.1069222694403607]],[[9.4482109059173922,7.108042253805138],[9.4431020288484433,7.1060478093552319],[9.4431020288484433,7.1100366982552714],[9.4482109059173922,7.108042253805138]],[[9.3393909174484406,7.1060478093552319],[9.3407564298973398,7.1109111583402296],[9.3442542664334951,7.1074133218043016],[9.3393909174484406,7.1060478093552319]],[[9.3699365161994592,7.1109111583402296],[9.3713020286483584,7.1060478093552319],[9.3664386796634744,7.1074133218043016],[9.3699365161994592,7.1109111583402296]],[[9.4878542630293055,7.1074133218043016],[9.4829909178484968,7.1060478093552319],[9.484356437905717,7.1109111583402296],[9.4878542630293055,7.1074133218043016]],[[9.3898809606993154,7.1149000472403259],[9.3912464731483851,7.1100366982552714],[9.3863831279675765,7.1114022107043411],[9.3898809606993154,7.1149000472403259]],[[9.3473686952484059,7.1180144760552366],[9.3473686952484059,7.1140255871551972],[9.3422598200814377,7.1160200316053306],[9.3473686952484059,7.1180144760552366]],[[9.3673131397484326,7.1180144760552366],[9.3650945995187271,7.1128301674694399],[9.3582482564274869,7.1164167498752704],[9.3673131397484326,7.1180144760552366]],[[9.4816253977912766,7.1188889342382708],[9.4829909178484968,7.1140255871551972],[9.4781275726675176,7.1153910996042669],[9.4816253977912766,7.1188889342382708]],[[9.4431020288484433,7.1220033649553329],[9.4411075843983099,7.1168944916902888],[9.4391131399484038,7.1220033649553329],[9.4431020288484433,7.1220033649553329]],[[9.4191686954483771,7.1259922538552587],[9.4191686954483771,7.1220033649553329],[9.4151798065484513,7.1220033649553329],[9.4111909176484119,7.1220033649553329],[9.4111909176484119,7.1259922538552587],[9.4191686954483771,7.1259922538552587]],[[9.4656698421911756,7.1268667120382361],[9.4670353622483958,7.1220033649553329],[9.4621720170674166,7.1233688774042321],[9.4656698421911756,7.1268667120382361]],[[9.3531791017798014,7.1270680992374196],[9.3553464730484279,7.1220033649553329],[9.3461732755627054,7.1236201820154861],[9.3531791017798014,7.1270680992374196]],[[9.4431020288484433,7.1259922538552587],[9.4391131399484038,7.1259922538552587],[9.4391131399484038,7.1299811427552982],[9.4431020288484433,7.1299811427552982],[9.4431020288484433,7.1259922538552587]],[[9.4018476273993201,7.1308556009381618],[9.4032131398483898,7.1259922538552587],[9.3983497946674674,7.1273577663043284],[9.4018476273993201,7.1308556009381618]],[[9.4191686954483771,7.1259922538552587],[9.4205342078974468,7.1308556009381618],[9.4240320406293563,7.1273577663043284],[9.4191686954483771,7.1259922538552587]],[[9.4656698421911756,7.1348444898382013],[9.4670353622483958,7.1299811427552982],[9.4621720170674166,7.1313466552043678],[9.4656698421911756,7.1348444898382013]]]}},{"attributes":{"OBJECTID":3,"gridcode":3,"Shape_Length":0.27242763901493228,"Shape_Area":0.00020400938333157138},"geometry":{"rings":[[[9.3858920717993897,7.0151778209361737],[9.3872575842484594,7.0103144757551945],[9.3823942390674802,7.0116799958125853],[9.3858920717993897,7.0151778209361737]],[[9.4240320406293563,7.0196577736125505],[9.4191686954483771,7.0182922535553303],[9.4205342078974468,7.0231555987361389],[9.4240320406293563,7.0196577736125505]],[[9.4072020287486566,7.0462144758553222],[9.4120653739292948,7.0448489634062526],[9.4085675411973853,7.041351130674343],[9.4072020287486566,7.0462144758553222]],[[9.4072020287486566,7.0462144758553222],[9.4032131398483898,7.0462144758553222],[9.4032131398483898,7.050203364755248],[9.4072020287486566,7.050203364755248],[9.4072020287486566,7.0462144758553222]],[[9.3739254050993281,7.0590555988360961],[9.3752909175483978,7.0541922536552875],[9.3704275685634002,7.0555577661043571],[9.3739254050993281,7.0590555988360961]],[[9.3898809606993154,7.0710222655361576],[9.3912464731483851,7.0661589203551785],[9.3863831279675765,7.0675244328042481],[9.3898809606993154,7.0710222655361576]],[[9.4736476199911408,7.0790000433361229],[9.475013140048361,7.0741366981553142],[9.4701497948675524,7.0755022106043839],[9.4736476199911408,7.0790000433361229]],[[9.3713020286483584,7.0861033648552052],[9.3699365161994592,7.0812400196743965],[9.3664386796634744,7.0847378524061355],[9.3713020286483584,7.0861033648552052]],[[9.4217920718993469,7.0869778249403339],[9.4231575843484165,7.0821144759552794],[9.4182942391674374,7.0834799884043491],[9.4217920718993469,7.0869778249403339]],[[9.3713020286483584,7.0861033648552052],[9.3726675410974281,7.0909667138402597],[9.3761653738293376,7.0874688773042749],[9.3713020286483584,7.0861033648552052]],[[9.4018476273993201,7.0909667138402597],[9.4032131398483898,7.0861033648552052],[9.3983497946674674,7.0874688773042749],[9.4018476273993201,7.0909667138402597]],[[9.4402331281175975,7.1000644760051728],[9.4351242510484781,7.0980700315552667],[9.4351242510484781,7.1020589204553062],[9.4402331281175975,7.1000644760051728]],[[9.4829909178484968,7.1060478093552319],[9.4816253977912766,7.1011844603701775],[9.4781275726675176,7.1046822969061623],[9.4829909178484968,7.1060478093552319]],[[9.4431020288484433,7.1100366982552714],[9.4431020288484433,7.1060478093552319],[9.4379931517793239,7.108042253805138],[9.4431020288484433,7.1100366982552714]],[[9.4058365162995869,7.1109111583402296],[9.4072020287486566,7.1060478093552319],[9.4023386835675069,7.1074133218043016],[9.4058365162995869,7.1109111583402296]],[[9.3524775685133363,7.1160200316053306],[9.3473686952484059,7.1140255871551972],[9.3473686952484059,7.1180144760552366],[9.3524775685133363,7.1160200316053306]],[[9.4696587310910445,7.1188889342382708],[9.4710242511484353,7.1140255871551972],[9.4661609059674561,7.1153910996042669],[9.4696587310910445,7.1188889342382708]],[[9.4431020288484433,7.1220033649553329],[9.4391131399484038,7.1220033649553329],[9.4391131399484038,7.1259922538552587],[9.4431020288484433,7.1259922538552587],[9.4431020288484433,7.1220033649553329]]]}},{"attributes":{"OBJECTID":4,"gridcode":4,"Shape_Length":0.21984450899830862,"Shape_Area":0.00017197021566535661},"geometry":{"rings":[[[9.4191686954483771,7.0182922535553303],[9.4178031829993074,7.0134289083743511],[9.4143053502675684,7.0169267334979395],[9.4191686954483771,7.0182922535553303]],[[9.3978587384994512,7.0271444876362352],[9.3992242509483503,7.022281142455256],[9.3943609057677122,7.0236466549043257],[9.3978587384994512,7.0271444876362352]],[[9.3858920717993897,7.0351222654362005],[9.3872575842484594,7.0302589202552213],[9.3823942390674802,7.0316244327042909],[9.3858920717993897,7.0351222654362005]],[[9.4231575843484165,7.0661589203551785],[9.4191686954483771,7.0661589203551785],[9.4191686954483771,7.0701478092552748],[9.4231575843484165,7.0701478092552748],[9.4231575843484165,7.0661589203551785]],[[9.4470909177483691,7.0741366981553142],[9.4457253976911488,7.069273352974335],[9.4422275725675604,7.0727711857062445],[9.4470909177483691,7.0741366981553142]],[[9.4470909177483691,7.0741366981553142],[9.4484564378055325,7.0790000433361229],[9.4519542629293483,7.0755022106043839],[9.4470909177483691,7.0741366981553142]],[[9.4576920643912104,7.0790000433361229],[9.4590575844483737,7.0741366981553142],[9.4541942392674514,7.0755022106043839],[9.4576920643912104,7.0790000433361229]],[[9.3513575841483316,7.0821144759552794],[9.3473686952484059,7.0821144759552794],[9.3473686952484059,7.0861033648552052],[9.3513575841483316,7.0861033648552052],[9.3513575841483316,7.0821144759552794]],[[9.4537031754911141,7.0869778249403339],[9.4550686955483343,7.0821144759552794],[9.4502053503676962,7.0834799884043491],[9.4537031754911141,7.0869778249403339]],[[9.3819031828993502,7.0909667138402597],[9.3832686953484199,7.0861033648552052],[9.3784053501674407,7.0874688773042749],[9.3819031828993502,7.0909667138402597]],[[9.3260587373482622,7.1029333805402644],[9.327424250748436,7.0980700315552667],[9.3225609036653054,7.0994355440043364],[9.3260587373482622,7.1029333805402644]],[[9.3593353619484674,7.1060478093552319],[9.3593353619484674,7.1020589204553062],[9.3542264886834232,7.1040533649052691],[9.3593353619484674,7.1060478093552319]],[[9.4574598620724828,7.1111238037762519],[9.4590575844483737,7.1020589204553062],[9.4538732796666523,7.104277460684898],[9.4574598620724828,7.1111238037762519]],[[9.3593353619484674,7.1060478093552319],[9.3613298063984303,7.1111566826202761],[9.3633242508483931,7.1060478093552319],[9.3593353619484674,7.1060478093552319]]]}},{"attributes":{"OBJECTID":5,"gridcode":5,"Shape_Length":0.18403456583984942,"Shape_Area":0.00014938621680512948},"geometry":{"rings":[[[9.4032131398483898,7.0462144758553222],[9.3992242509483503,7.0462144758553222],[9.3992242509483503,7.050203364755248],[9.4032131398483898,7.050203364755248],[9.4032131398483898,7.0462144758553222]],[[9.3619587383993235,7.0550667099362272],[9.3633242508483931,7.050203364755248],[9.3584609018633387,7.0515688772043177],[9.3619587383993235,7.0550667099362272]],[[9.4736476199911408,7.0630444877361924],[9.475013140048361,7.0581811425552132],[9.4701497948675524,7.0595466550042829],[9.4736476199911408,7.0630444877361924]],[[9.4151798065484513,7.0661589203551785],[9.4138142940993816,7.0612955751743698],[9.4103164613674721,7.0647934079062793],[9.4151798065484513,7.0661589203551785]],[[9.4151798065484513,7.0661589203551785],[9.4151798065484513,7.0701478092552748],[9.4191686954483771,7.0701478092552748],[9.4191686954483771,7.0661589203551785],[9.4151798065484513,7.0661589203551785]],[[9.4282664614173655,7.0681533648053119],[9.4231575843484165,7.0661589203551785],[9.4231575843484165,7.0701478092552748],[9.4282664614173655,7.0681533648053119]],[[9.3579698494993977,7.0710222655361576],[9.3593353619484674,7.0661589203551785],[9.3544720129634129,7.0675244328042481],[9.3579698494993977,7.0710222655361576]],[[9.3619587383993235,7.0829889322362192],[9.3633242508483931,7.07812558705524],[9.3584609018633387,7.0794910995043097],[9.3619587383993235,7.0829889322362192]],[[9.3564664574133758,7.0841089204052423],[9.3513575841483316,7.0821144759552794],[9.3513575841483316,7.0861033648552052],[9.3564664574133758,7.0841089204052423]],[[9.3473686952484059,7.0861033648552052],[9.3433798063483664,7.0861033648552052],[9.3433798063483664,7.0900922537552447],[9.3473686952484059,7.0900922537552447],[9.3473686952484059,7.0861033648552052]],[[9.3354020285484012,7.094081142655341],[9.3340365160993315,7.0892177936702865],[9.3305386814654412,7.0927156302062713],[9.3354020285484012,7.094081142655341]],[[9.3872575842484594,7.0980700315552667],[9.3832686953484199,7.0980700315552667],[9.3832686953484199,7.1020589204553062],[9.3872575842484594,7.1020589204553062],[9.3872575842484594,7.0980700315552667]]]}}]} --------------------------------------------------------------------------------