{
"cells": [
{
"cell_type": "markdown",
"id": "d3293211",
"metadata": {},
"source": [
"# Calculating landcover distribution & vegetation extraction\n",
"**Farzad Vahidi Mayamey**\t\n",
"\n",
"**Aim of the studies**\n",
"\n",
"1. Calculating landcover distribution in our wetlands based on 10 m landcover map of Sweden\n",
"2. Open water and flooded vegetation extraction in one of our wetlands."
]
},
{
"cell_type": "markdown",
"id": "6c72b53c",
"metadata": {},
"source": [
"## Calculating landcover distribution\n",
"we use two different layer:\n",
"1. [National landcover map of Sweden in 10m resolution](https://www.swedishepa.se/State-of-the-environment/Maps-and-map-services/National-Land-Cover-Database/) ( left picture)\n",
"2. [vector layer of Ramsar sites in Sweden](https://rsis.ramsar.org/ris-search/?f[0]=regionCountry_en_ss%3ASweden) ( right picture)\n",
"\n",
" "
]
},
{
"cell_type": "code",
"execution_count": 100,
"id": "3442a3d3",
"metadata": {
"collapsed": true,
"jupyter": {
"outputs_hidden": true
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Driver: GTiff/GeoTIFF\n",
"Files: nmd2018bas_ogeneraliserad_v1_1.tif\n",
"Size is 71273, 157992\n",
"Coordinate System is:\n",
"PROJCS[\"SWEREF99 TM\",\n",
" GEOGCS[\"SWEREF99\",\n",
" DATUM[\"SWEREF99\",\n",
" SPHEROID[\"GRS 1980\",6378137,298.257222101,\n",
" AUTHORITY[\"EPSG\",\"7019\"]],\n",
" TOWGS84[0,0,0,0,0,0,0],\n",
" AUTHORITY[\"EPSG\",\"6619\"]],\n",
" PRIMEM[\"Greenwich\",0,\n",
" AUTHORITY[\"EPSG\",\"8901\"]],\n",
" UNIT[\"degree\",0.0174532925199433,\n",
" AUTHORITY[\"EPSG\",\"9122\"]],\n",
" AUTHORITY[\"EPSG\",\"4619\"]],\n",
" PROJECTION[\"Transverse_Mercator\"],\n",
" PARAMETER[\"latitude_of_origin\",0],\n",
" PARAMETER[\"central_meridian\",15],\n",
" PARAMETER[\"scale_factor\",0.9996],\n",
" PARAMETER[\"false_easting\",500000],\n",
" PARAMETER[\"false_northing\",0],\n",
" UNIT[\"metre\",1,\n",
" AUTHORITY[\"EPSG\",\"9001\"]],\n",
" AUTHORITY[\"EPSG\",\"3006\"]]\n",
"Origin = (208450.000000000000000,7671060.000000000000000)\n",
"Pixel Size = (10.000000000000000,-10.000000000000000)\n",
"Metadata:\n",
" AREA_OR_POINT=Area\n",
" TIFFTAG_RESOLUTIONUNIT=2 (pixels/inch)\n",
" TIFFTAG_SOFTWARE=E\n",
" TIFFTAG_XRESOLUTION=1\n",
" TIFFTAG_YRESOLUTION=1\n",
"Image Structure Metadata:\n",
" COMPRESSION=PACKBITS\n",
" INTERLEAVE=BAND\n",
"Corner Coordinates:\n",
"Upper Left ( 208450.000, 7671060.000) ( 7d41'51.00\"E, 68d59'38.16\"N)\n",
"Lower Left ( 208450.000, 6091140.000) ( 10d27'14.37\"E, 54d52'55.53\"N)\n",
"Upper Right ( 921180.000, 7671060.000) ( 25d29'31.13\"E, 68d49'34.01\"N)\n",
"Lower Right ( 921180.000, 6091140.000) ( 21d33'17.33\"E, 54d47'23.89\"N)\n",
"Center ( 564815.000, 6881100.000) ( 16d14'23.34\"E, 62d 3'23.60\"N)\n",
"Band 1 Block=512x512 Type=Byte, ColorInterp=Palette\n",
" NoData Value=0\n",
" Color Table (RGB with 256 entries)\n",
" 0: 0,0,0,0\n",
" 1: 0,0,0,255\n",
" 2: 194,158,215,255\n",
" 3: 255,255,190,255\n",
" 4: 0,0,0,255\n",
" 5: 0,0,0,255\n",
" 6: 0,0,0,255\n",
" 7: 0,0,0,255\n",
" 8: 0,0,0,255\n",
" 9: 0,0,0,255\n",
" 10: 0,0,0,255\n",
" 11: 0,0,0,255\n",
" 12: 0,0,0,255\n",
" 13: 0,0,0,255\n",
" 14: 0,0,0,255\n",
" 15: 0,0,0,255\n",
" 16: 0,0,0,255\n",
" 17: 0,0,0,255\n",
" 18: 0,0,0,255\n",
" 19: 0,0,0,255\n",
" 20: 0,0,0,255\n",
" 21: 0,0,0,255\n",
" 22: 0,0,0,255\n",
" 23: 0,0,0,255\n",
" 24: 0,0,0,255\n",
" 25: 0,0,0,255\n",
" 26: 0,0,0,255\n",
" 27: 0,0,0,255\n",
" 28: 0,0,0,255\n",
" 29: 0,0,0,255\n",
" 30: 0,0,0,255\n",
" 31: 0,0,0,255\n",
" 32: 0,0,0,255\n",
" 33: 0,0,0,255\n",
" 34: 0,0,0,255\n",
" 35: 0,0,0,255\n",
" 36: 0,0,0,255\n",
" 37: 0,0,0,255\n",
" 38: 0,0,0,255\n",
" 39: 0,0,0,255\n",
" 40: 0,0,0,255\n",
" 41: 225,225,225,255\n",
" 42: 255,211,127,255\n",
" 43: 0,0,0,255\n",
" 44: 0,0,0,255\n",
" 45: 0,0,0,255\n",
" 46: 0,0,0,255\n",
" 47: 0,0,0,255\n",
" 48: 0,0,0,255\n",
" 49: 0,0,0,255\n",
" 50: 0,0,0,255\n",
" 51: 90,20,20,255\n",
" 52: 229,70,75,255\n",
" 53: 25,25,25,255\n",
" 54: 0,0,0,255\n",
" 55: 0,0,0,255\n",
" 56: 0,0,0,255\n",
" 57: 0,0,0,255\n",
" 58: 0,0,0,255\n",
" 59: 0,0,0,255\n",
" 60: 0,0,0,255\n",
" 61: 102,153,205,255\n",
" 62: 138,204,250,255\n",
" 63: 0,0,0,255\n",
" 64: 0,0,0,255\n",
" 65: 0,0,0,255\n",
" 66: 0,0,0,255\n",
" 67: 0,0,0,255\n",
" 68: 0,0,0,255\n",
" 69: 0,0,0,255\n",
" 70: 0,0,0,255\n",
" 71: 0,0,0,255\n",
" 72: 0,0,0,255\n",
" 73: 0,0,0,255\n",
" 74: 0,0,0,255\n",
" 75: 0,0,0,255\n",
" 76: 0,0,0,255\n",
" 77: 0,0,0,255\n",
" 78: 0,0,0,255\n",
" 79: 0,0,0,255\n",
" 80: 0,0,0,255\n",
" 81: 0,0,0,255\n",
" 82: 0,0,0,255\n",
" 83: 0,0,0,255\n",
" 84: 0,0,0,255\n",
" 85: 0,0,0,255\n",
" 86: 0,0,0,255\n",
" 87: 0,0,0,255\n",
" 88: 0,0,0,255\n",
" 89: 0,0,0,255\n",
" 90: 0,0,0,255\n",
" 91: 0,0,0,255\n",
" 92: 0,0,0,255\n",
" 93: 0,0,0,255\n",
" 94: 0,0,0,255\n",
" 95: 0,0,0,255\n",
" 96: 0,0,0,255\n",
" 97: 0,0,0,255\n",
" 98: 0,0,0,255\n",
" 99: 0,0,0,255\n",
" 100: 0,0,0,255\n",
" 101: 0,0,0,255\n",
" 102: 0,0,0,255\n",
" 103: 0,0,0,255\n",
" 104: 0,0,0,255\n",
" 105: 0,0,0,255\n",
" 106: 0,0,0,255\n",
" 107: 0,0,0,255\n",
" 108: 0,0,0,255\n",
" 109: 0,0,0,255\n",
" 110: 0,0,0,255\n",
" 111: 110,140,5,255\n",
" 112: 45,95,0,255\n",
" 113: 78,112,0,255\n",
" 114: 56,168,0,255\n",
" 115: 76,230,0,255\n",
" 116: 170,255,0,255\n",
" 117: 151,230,0,255\n",
" 118: 205,205,102,255\n",
" 119: 0,0,0,255\n",
" 120: 0,0,0,255\n",
" 121: 89,140,85,255\n",
" 122: 48,94,80,255\n",
" 123: 35,115,90,255\n",
" 124: 67,136,112,255\n",
" 125: 137,205,155,255\n",
" 126: 165,245,120,255\n",
" 127: 171,205,120,255\n",
" 128: 137,137,68,255\n",
" 129: 0,0,0,255\n",
" 130: 194,158,215,255\n",
" 131: 255,255,190,255\n",
" 132: 0,0,0,255\n",
" 133: 0,0,0,255\n",
" 134: 0,0,0,255\n",
" 135: 0,0,0,255\n",
" 136: 0,0,0,255\n",
" 137: 0,0,0,255\n",
" 138: 0,0,0,255\n",
" 139: 0,0,0,255\n",
" 140: 0,0,0,255\n",
" 141: 0,0,0,255\n",
" 142: 0,0,0,255\n",
" 143: 0,0,0,255\n",
" 144: 0,0,0,255\n",
" 145: 0,0,0,255\n",
" 146: 0,0,0,255\n",
" 147: 0,0,0,255\n",
" 148: 0,0,0,255\n",
" 149: 0,0,0,255\n",
" 150: 0,0,0,255\n",
" 151: 0,0,0,255\n",
" 152: 0,0,0,255\n",
" 153: 0,0,0,255\n",
" 154: 0,0,0,255\n",
" 155: 0,0,0,255\n",
" 156: 0,0,0,255\n",
" 157: 0,0,0,255\n",
" 158: 0,0,0,255\n",
" 159: 0,0,0,255\n",
" 160: 0,0,0,255\n",
" 161: 0,0,0,255\n",
" 162: 0,0,0,255\n",
" 163: 0,0,0,255\n",
" 164: 0,0,0,255\n",
" 165: 0,0,0,255\n",
" 166: 0,0,0,255\n",
" 167: 0,0,0,255\n",
" 168: 0,0,0,255\n",
" 169: 225,225,225,255\n",
" 170: 255,211,127,255\n",
" 171: 0,0,0,255\n",
" 172: 0,0,0,255\n",
" 173: 0,0,0,255\n",
" 174: 0,0,0,255\n",
" 175: 0,0,0,255\n",
" 176: 0,0,0,255\n",
" 177: 0,0,0,255\n",
" 178: 0,0,0,255\n",
" 179: 90,20,20,255\n",
" 180: 229,70,75,255\n",
" 181: 25,25,25,255\n",
" 182: 0,0,0,255\n",
" 183: 0,0,0,255\n",
" 184: 0,0,0,255\n",
" 185: 0,0,0,255\n",
" 186: 0,0,0,255\n",
" 187: 0,0,0,255\n",
" 188: 0,0,0,255\n",
" 189: 102,153,205,255\n",
" 190: 138,204,250,255\n",
" 191: 0,0,0,255\n",
" 192: 192,192,192,255\n",
" 193: 193,193,193,255\n",
" 194: 194,194,194,255\n",
" 195: 195,195,195,255\n",
" 196: 196,196,196,255\n",
" 197: 197,197,197,255\n",
" 198: 198,198,198,255\n",
" 199: 199,199,199,255\n",
" 200: 200,200,200,255\n",
" 201: 201,201,201,255\n",
" 202: 202,202,202,255\n",
" 203: 203,203,203,255\n",
" 204: 204,204,204,255\n",
" 205: 205,205,205,255\n",
" 206: 206,206,206,255\n",
" 207: 207,207,207,255\n",
" 208: 208,208,208,255\n",
" 209: 209,209,209,255\n",
" 210: 210,210,210,255\n",
" 211: 211,211,211,255\n",
" 212: 212,212,212,255\n",
" 213: 213,213,213,255\n",
" 214: 214,214,214,255\n",
" 215: 215,215,215,255\n",
" 216: 216,216,216,255\n",
" 217: 217,217,217,255\n",
" 218: 218,218,218,255\n",
" 219: 219,219,219,255\n",
" 220: 220,220,220,255\n",
" 221: 221,221,221,255\n",
" 222: 222,222,222,255\n",
" 223: 223,223,223,255\n",
" 224: 224,224,224,255\n",
" 225: 225,225,225,255\n",
" 226: 226,226,226,255\n",
" 227: 227,227,227,255\n",
" 228: 228,228,228,255\n",
" 229: 229,229,229,255\n",
" 230: 230,230,230,255\n",
" 231: 231,231,231,255\n",
" 232: 232,232,232,255\n",
" 233: 233,233,233,255\n",
" 234: 234,234,234,255\n",
" 235: 235,235,235,255\n",
" 236: 236,236,236,255\n",
" 237: 237,237,237,255\n",
" 238: 238,238,238,255\n",
" 239: 239,239,239,255\n",
" 240: 240,240,240,255\n",
" 241: 241,241,241,255\n",
" 242: 242,242,242,255\n",
" 243: 243,243,243,255\n",
" 244: 244,244,244,255\n",
" 245: 245,245,245,255\n",
" 246: 246,246,246,255\n",
" 247: 247,247,247,255\n",
" 248: 248,248,248,255\n",
" 249: 249,249,249,255\n",
" 250: 250,250,250,255\n",
" 251: 251,251,251,255\n",
" 252: 252,252,252,255\n",
" 253: 253,253,253,255\n",
" 254: 254,254,254,255\n",
" 255: 255,255,255,255\n"
]
}
],
"source": [
"%%bash\n",
"gdalinfo nmd2018bas_ogeneraliserad_v1_1.tif | more"
]
},
{
"cell_type": "markdown",
"id": "454c66bf",
"metadata": {},
"source": [
"As NoData Value is not assigned, we assign nodata value = 0"
]
},
{
"cell_type": "code",
"execution_count": 102,
"id": "d80052fe",
"metadata": {},
"outputs": [],
"source": [
"%%bash\n",
"gdal_edit.py -a_nodata 0 nmd2018bas_ogeneraliserad_v1_1.tif"
]
},
{
"cell_type": "markdown",
"id": "67977703",
"metadata": {},
"source": [
"we create the shapefile of each wetland by using ```$ split vector layer``` tool in QGIS to clip our landcover by this layers"
]
},
{
"cell_type": "code",
"execution_count": 104,
"id": "9da3e98d",
"metadata": {
"collapsed": true,
"jupyter": {
"outputs_hidden": true
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"rms/ramsarid_1113.gpkg\n",
"Copying color table from nmd2018bas_ogeneraliserad_v1_1.tif to new file.\n",
"Creating output file that is 2623P x 1832L.\n",
"Processing nmd2018bas_ogeneraliserad_v1_1.tif [1/1] : 0...10...20...30...40...50...60...70...80...90...100 - done.\n",
"rms/ramsarid_1114.gpkg\n",
"Copying color table from nmd2018bas_ogeneraliserad_v1_1.tif to new file.\n",
"Creating output file that is 2745P x 1850L.\n",
"Processing nmd2018bas_ogeneraliserad_v1_1.tif [1/1] : 0...10...20...30...40...50...60...70...80...90...100 - done.\n",
"rms/ramsarid_1115.gpkg\n",
"Copying color table from nmd2018bas_ogeneraliserad_v1_1.tif to new file.\n",
"Creating output file that is 4953P x 1980L.\n",
"Processing nmd2018bas_ogeneraliserad_v1_1.tif [1/1] : 0...10...20...30...40...50...60...70...80...90...100 - done.\n",
"rms/ramsarid_1116.gpkg\n",
"Copying color table from nmd2018bas_ogeneraliserad_v1_1.tif to new file.\n",
"Creating output file that is 2032P x 3435L.\n",
"Processing nmd2018bas_ogeneraliserad_v1_1.tif [1/1] : 0...10...20...30...40...50...60...70...80...90...100 - done.\n",
"rms/ramsarid_1117.gpkg\n",
"Copying color table from nmd2018bas_ogeneraliserad_v1_1.tif to new file.\n",
"Creating output file that is 694P x 1137L.\n",
"Processing nmd2018bas_ogeneraliserad_v1_1.tif [1/1] : 0...10...20...30...40...50...60...70...80...90...100 - done.\n",
"rms/ramsarid_1118.gpkg\n",
"Copying color table from nmd2018bas_ogeneraliserad_v1_1.tif to new file.\n",
"Creating output file that is 997P x 633L.\n",
"Processing nmd2018bas_ogeneraliserad_v1_1.tif [1/1] : 0...10...20...30...40...50...60...70...80...90...100 - done.\n",
"rms/ramsarid_1119.gpkg\n",
"Copying color table from nmd2018bas_ogeneraliserad_v1_1.tif to new file.\n",
"Creating output file that is 1370P x 1214L.\n",
"Processing nmd2018bas_ogeneraliserad_v1_1.tif [1/1] : 0...10...20...30...40...50...60...70...80...90...100 - done.\n",
"rms/ramsarid_1120.gpkg\n",
"Copying color table from nmd2018bas_ogeneraliserad_v1_1.tif to new file.\n",
"Creating output file that is 421P x 661L.\n",
"Processing nmd2018bas_ogeneraliserad_v1_1.tif [1/1] : 0...10...20...30...40...50...60...70...80...90...100 - done.\n",
"rms/ramsarid_1121.gpkg\n",
"Copying color table from nmd2018bas_ogeneraliserad_v1_1.tif to new file.\n",
"Creating output file that is 807P x 1246L.\n",
"Processing nmd2018bas_ogeneraliserad_v1_1.tif [1/1] : 0...10...20...30...40...50...60...70...80...90...100 - done.\n",
"rms/ramsarid_1122.gpkg\n",
"Copying color table from nmd2018bas_ogeneraliserad_v1_1.tif to new file.\n",
"Creating output file that is 636P x 1020L.\n",
"Processing nmd2018bas_ogeneraliserad_v1_1.tif [1/1] : 0...10...20...30...40...50...60...70...80...90...100 - done.\n",
"rms/ramsarid_1123.gpkg\n",
"Copying color table from nmd2018bas_ogeneraliserad_v1_1.tif to new file.\n",
"Creating output file that is 835P x 3896L.\n",
"Processing nmd2018bas_ogeneraliserad_v1_1.tif [1/1] : 0...10...20...30...40...50...60...70...80...90...100 - done.\n",
"rms/ramsarid_1124.gpkg\n",
"Copying color table from nmd2018bas_ogeneraliserad_v1_1.tif to new file.\n",
"Creating output file that is 497P x 421L.\n",
"Processing nmd2018bas_ogeneraliserad_v1_1.tif [1/1] : 0...10...20...30...40...50...60...70...80...90...100 - done.\n",
"rms/ramsarid_1125.gpkg\n",
"Copying color table from nmd2018bas_ogeneraliserad_v1_1.tif to new file.\n",
"Creating output file that is 1724P x 1163L.\n",
"Processing nmd2018bas_ogeneraliserad_v1_1.tif [1/1] : 0...10...20...30...40...50...60...70...80...90...100 - done.\n",
"rms/ramsarid_1126.gpkg\n",
"Copying color table from nmd2018bas_ogeneraliserad_v1_1.tif to new file.\n",
"Creating output file that is 1579P x 1571L.\n",
"Processing nmd2018bas_ogeneraliserad_v1_1.tif [1/1] : 0...10...20...30...40...50...60...70...80...90...100 - done.\n",
"rms/ramsarid_1127.gpkg\n",
"Copying color table from nmd2018bas_ogeneraliserad_v1_1.tif to new file.\n",
"Creating output file that is 725P x 371L.\n",
"Processing nmd2018bas_ogeneraliserad_v1_1.tif [1/1] : 0...10...20...30...40...50...60...70...80...90...100 - done.\n",
"rms/ramsarid_1128.gpkg\n",
"Copying color table from nmd2018bas_ogeneraliserad_v1_1.tif to new file.\n",
"Creating output file that is 1269P x 691L.\n",
"Processing nmd2018bas_ogeneraliserad_v1_1.tif [1/1] : 0...10...20...30...40...50...60...70...80...90...100 - done.\n",
"rms/ramsarid_1129.gpkg\n",
"Copying color table from nmd2018bas_ogeneraliserad_v1_1.tif to new file.\n",
"Creating output file that is 1074P x 1192L.\n",
"Processing nmd2018bas_ogeneraliserad_v1_1.tif [1/1] : 0...10...20...30...40...50...60...70...80...90...100 - done.\n",
"rms/ramsarid_1130.gpkg\n",
"Copying color table from nmd2018bas_ogeneraliserad_v1_1.tif to new file.\n",
"Creating output file that is 376P x 444L.\n",
"Processing nmd2018bas_ogeneraliserad_v1_1.tif [1/1] : 0...10...20...30...40...50...60...70...80...90...100 - done.\n",
"rms/ramsarid_1131.gpkg\n",
"Copying color table from nmd2018bas_ogeneraliserad_v1_1.tif to new file.\n",
"Creating output file that is 1803P x 2087L.\n",
"Processing nmd2018bas_ogeneraliserad_v1_1.tif [1/1] : 0...10...20...30...40...50...60...70...80...90...100 - done.\n",
"rms/ramsarid_1132.gpkg\n",
"Copying color table from nmd2018bas_ogeneraliserad_v1_1.tif to new file.\n",
"Creating output file that is 265P x 323L.\n",
"Processing nmd2018bas_ogeneraliserad_v1_1.tif [1/1] : 0...10...20...30...40...50...60...70...80...90...100 - done.\n",
"rms/ramsarid_1133.gpkg\n",
"Copying color table from nmd2018bas_ogeneraliserad_v1_1.tif to new file.\n",
"Creating output file that is 857P x 1257L.\n",
"Processing nmd2018bas_ogeneraliserad_v1_1.tif [1/1] : 0...10...20...30...40...50...60...70...80...90...100 - done.\n",
"rms/ramsarid_14.gpkg\n",
"Copying color table from nmd2018bas_ogeneraliserad_v1_1.tif to new file.\n",
"Creating output file that is 1215P x 2045L.\n",
"Processing nmd2018bas_ogeneraliserad_v1_1.tif [1/1] : 0...10...20...30...40...50...60...70...80...90...100 - done.\n",
"rms/ramsarid_15.gpkg\n",
"Copying color table from nmd2018bas_ogeneraliserad_v1_1.tif to new file.\n",
"Creating output file that is 1538P x 1692L.\n",
"Processing nmd2018bas_ogeneraliserad_v1_1.tif [1/1] : 0...10...20...30...40...50...60...70...80...90...100 - done.\n",
"rms/ramsarid_16.gpkg\n",
"Copying color table from nmd2018bas_ogeneraliserad_v1_1.tif to new file.\n",
"Creating output file that is 1224P x 2753L.\n",
"Processing nmd2018bas_ogeneraliserad_v1_1.tif [1/1] : 0...10...20...30...40...50...60...70...80...90...100 - done.\n",
"rms/ramsarid_17.gpkg\n",
"Copying color table from nmd2018bas_ogeneraliserad_v1_1.tif to new file.\n",
"Creating output file that is 567P x 663L.\n",
"Processing nmd2018bas_ogeneraliserad_v1_1.tif [1/1] : 0...10...20...30...40...50...60...70...80...90...100 - done.\n",
"rms/ramsarid_18.gpkg\n",
"Copying color table from nmd2018bas_ogeneraliserad_v1_1.tif to new file.\n",
"Creating output file that is 2657P x 8279L.\n",
"Processing nmd2018bas_ogeneraliserad_v1_1.tif [1/1] : 0...10...20...30...40...50...60...70...80...90...100 - done.\n",
"rms/ramsarid_19.gpkg\n",
"Copying color table from nmd2018bas_ogeneraliserad_v1_1.tif to new file.\n",
"Creating output file that is 299P x 262L.\n",
"Processing nmd2018bas_ogeneraliserad_v1_1.tif [1/1] : 0...10...20...30...40...50...60...70...80...90...100 - done.\n",
"rms/ramsarid_20.gpkg\n",
"Copying color table from nmd2018bas_ogeneraliserad_v1_1.tif to new file.\n",
"Creating output file that is 1340P x 1415L.\n",
"Processing nmd2018bas_ogeneraliserad_v1_1.tif [1/1] : 0...10...20...30...40...50...60...70...80...90...100 - done.\n",
"rms/ramsarid_2167.gpkg\n",
"Copying color table from nmd2018bas_ogeneraliserad_v1_1.tif to new file.\n",
"Creating output file that is 4054P x 4742L.\n",
"Processing nmd2018bas_ogeneraliserad_v1_1.tif [1/1] : 0...10...20...30...40...50...60...70...80...90...100 - done.\n",
"rms/ramsarid_2168.gpkg\n",
"Copying color table from nmd2018bas_ogeneraliserad_v1_1.tif to new file.\n",
"Creating output file that is 544P x 1222L.\n",
"Processing nmd2018bas_ogeneraliserad_v1_1.tif [1/1] : 0...10...20...30...40...50...60...70...80...90...100 - done.\n",
"rms/ramsarid_2169.gpkg\n",
"Copying color table from nmd2018bas_ogeneraliserad_v1_1.tif to new file.\n",
"Creating output file that is 359P x 1003L.\n",
"Processing nmd2018bas_ogeneraliserad_v1_1.tif [1/1] : 0...10...20...30...40...50...60...70...80...90...100 - done.\n",
"rms/ramsarid_2170.gpkg\n",
"Copying color table from nmd2018bas_ogeneraliserad_v1_1.tif to new file.\n",
"Creating output file that is 347P x 776L.\n",
"Processing nmd2018bas_ogeneraliserad_v1_1.tif [1/1] : 0...10...20...30...40...50...60...70...80...90...100 - done.\n",
"rms/ramsarid_2171.gpkg\n",
"Copying color table from nmd2018bas_ogeneraliserad_v1_1.tif to new file.\n",
"Creating output file that is 546P x 1439L.\n",
"Processing nmd2018bas_ogeneraliserad_v1_1.tif [1/1] : 0...10...20...30...40...50...60...70...80...90...100 - done.\n",
"rms/ramsarid_2172.gpkg\n",
"Copying color table from nmd2018bas_ogeneraliserad_v1_1.tif to new file.\n",
"Creating output file that is 364P x 521L.\n",
"Processing nmd2018bas_ogeneraliserad_v1_1.tif [1/1] : 0...10...20...30...40...50...60...70...80...90...100 - done.\n",
"rms/ramsarid_2173.gpkg\n",
"Copying color table from nmd2018bas_ogeneraliserad_v1_1.tif to new file.\n",
"Creating output file that is 3518P x 1881L.\n",
"Processing nmd2018bas_ogeneraliserad_v1_1.tif [1/1] : 0...10...20...30...40...50...60...70...80...90...100 - done.\n",
"rms/ramsarid_2174.gpkg\n",
"Copying color table from nmd2018bas_ogeneraliserad_v1_1.tif to new file.\n",
"Creating output file that is 253P x 289L.\n",
"Processing nmd2018bas_ogeneraliserad_v1_1.tif [1/1] : 0...10...20...30...40...50...60...70...80...90...100 - done.\n",
"rms/ramsarid_2175.gpkg\n",
"Copying color table from nmd2018bas_ogeneraliserad_v1_1.tif to new file.\n",
"Creating output file that is 1224P x 2245L.\n",
"Processing nmd2018bas_ogeneraliserad_v1_1.tif [1/1] : 0...10...20...30...40...50...60...70...80...90...100 - done.\n",
"rms/ramsarid_2176.gpkg\n",
"Copying color table from nmd2018bas_ogeneraliserad_v1_1.tif to new file.\n",
"Creating output file that is 1229P x 890L.\n",
"Processing nmd2018bas_ogeneraliserad_v1_1.tif [1/1] : 0...10...20...30...40...50...60...70...80...90...100 - done.\n",
"rms/ramsarid_2177.gpkg\n",
"Copying color table from nmd2018bas_ogeneraliserad_v1_1.tif to new file.\n",
"Creating output file that is 739P x 1017L.\n",
"Processing nmd2018bas_ogeneraliserad_v1_1.tif [1/1] : 0...10...20...30...40...50...60...70...80...90...100 - done.\n",
"rms/ramsarid_2178.gpkg\n",
"Copying color table from nmd2018bas_ogeneraliserad_v1_1.tif to new file.\n",
"Creating output file that is 1124P x 1273L.\n",
"Processing nmd2018bas_ogeneraliserad_v1_1.tif [1/1] : 0...10...20...30...40...50...60...70...80...90...100 - done.\n",
"rms/ramsarid_2179.gpkg\n",
"Copying color table from nmd2018bas_ogeneraliserad_v1_1.tif to new file.\n",
"Creating output file that is 366P x 262L.\n",
"Processing nmd2018bas_ogeneraliserad_v1_1.tif [1/1] : 0...10...20...30...40...50...60...70...80...90...100 - done.\n",
"rms/ramsarid_2180.gpkg\n",
"Copying color table from nmd2018bas_ogeneraliserad_v1_1.tif to new file.\n",
"Creating output file that is 1658P x 795L.\n",
"Processing nmd2018bas_ogeneraliserad_v1_1.tif [1/1] : 0...10...20...30...40...50...60...70...80...90...100 - done.\n",
"rms/ramsarid_21.gpkg\n",
"Copying color table from nmd2018bas_ogeneraliserad_v1_1.tif to new file.\n",
"Creating output file that is 3979P x 9467L.\n",
"Processing nmd2018bas_ogeneraliserad_v1_1.tif [1/1] : 0...10...20...30...40...50...60...70...80...90...100 - done.\n",
"rms/ramsarid_2260.gpkg\n",
"Copying color table from nmd2018bas_ogeneraliserad_v1_1.tif to new file.\n",
"Creating output file that is 838P x 618L.\n",
"Processing nmd2018bas_ogeneraliserad_v1_1.tif [1/1] : 0...10...20...30...40...50...60...70...80...90...100 - done.\n",
"rms/ramsarid_2265.gpkg\n",
"Copying color table from nmd2018bas_ogeneraliserad_v1_1.tif to new file.\n",
"Creating output file that is 236P x 441L.\n",
"Processing nmd2018bas_ogeneraliserad_v1_1.tif [1/1] : 0...10...20...30...40...50...60...70...80...90...100 - done.\n",
"rms/ramsarid_22.gpkg\n",
"Copying color table from nmd2018bas_ogeneraliserad_v1_1.tif to new file.\n",
"Creating output file that is 1237P x 1576L.\n",
"Processing nmd2018bas_ogeneraliserad_v1_1.tif [1/1] : 0...10...20...30...40...50...60...70...80...90...100 - done.\n",
"rms/ramsarid_23.gpkg\n",
"Copying color table from nmd2018bas_ogeneraliserad_v1_1.tif to new file.\n",
"Creating output file that is 1250P x 763L.\n",
"Processing nmd2018bas_ogeneraliserad_v1_1.tif [1/1] : 0...10...20...30...40...50...60...70...80...90...100 - done.\n",
"rms/ramsarid_24.gpkg\n",
"Copying color table from nmd2018bas_ogeneraliserad_v1_1.tif to new file.\n",
"Creating output file that is 585P x 386L.\n",
"Processing nmd2018bas_ogeneraliserad_v1_1.tif [1/1] : 0...10...20...30...40...50...60...70...80...90...100 - done.\n",
"rms/ramsarid_25.gpkg\n",
"Copying color table from nmd2018bas_ogeneraliserad_v1_1.tif to new file.\n",
"Creating output file that is 310P x 437L.\n",
"Processing nmd2018bas_ogeneraliserad_v1_1.tif [1/1] : 0...10...20...30...40...50...60...70...80...90...100 - done.\n",
"rms/ramsarid_26.gpkg\n",
"Copying color table from nmd2018bas_ogeneraliserad_v1_1.tif to new file.\n",
"Creating output file that is 1753P x 1250L.\n",
"Processing nmd2018bas_ogeneraliserad_v1_1.tif [1/1] : 0...10...20...30...40...50...60...70...80...90...100 - done.\n",
"rms/ramsarid_27.gpkg\n",
"Copying color table from nmd2018bas_ogeneraliserad_v1_1.tif to new file.\n",
"Creating output file that is 355P x 376L.\n",
"Processing nmd2018bas_ogeneraliserad_v1_1.tif [1/1] : 0...10...20...30...40...50...60...70...80...90...100 - done.\n",
"rms/ramsarid_28.gpkg\n",
"Copying color table from nmd2018bas_ogeneraliserad_v1_1.tif to new file.\n",
"Creating output file that is 1136P x 1172L.\n",
"Processing nmd2018bas_ogeneraliserad_v1_1.tif [1/1] : 0...10...20...30...40...50...60...70...80...90...100 - done.\n",
"rms/ramsarid_29.gpkg\n",
"Copying color table from nmd2018bas_ogeneraliserad_v1_1.tif to new file.\n",
"Creating output file that is 1933P x 4352L.\n",
"Processing nmd2018bas_ogeneraliserad_v1_1.tif [1/1] : 0...10...20...30...40...50...60...70...80...90...100 - done.\n",
"rms/ramsarid_30.gpkg\n",
"Copying color table from nmd2018bas_ogeneraliserad_v1_1.tif to new file.\n",
"Creating output file that is 3144P x 2662L.\n",
"Processing nmd2018bas_ogeneraliserad_v1_1.tif [1/1] : 0...10...20...30...40...50...60...70...80...90...100 - done.\n",
"rms/ramsarid_31.gpkg\n",
"Copying color table from nmd2018bas_ogeneraliserad_v1_1.tif to new file.\n",
"Creating output file that is 1719P x 712L.\n",
"Processing nmd2018bas_ogeneraliserad_v1_1.tif [1/1] : 0...10...20...30...40...50...60...70...80...90...100 - done.\n",
"rms/ramsarid_32.gpkg\n",
"Copying color table from nmd2018bas_ogeneraliserad_v1_1.tif to new file.\n",
"Creating output file that is 7512P x 6180L.\n",
"Processing nmd2018bas_ogeneraliserad_v1_1.tif [1/1] : 0...10...20...30...40...50...60...70...80...90...100 - done.\n",
"rms/ramsarid_33.gpkg\n",
"Copying color table from nmd2018bas_ogeneraliserad_v1_1.tif to new file.\n",
"Creating output file that is 2602P x 2191L.\n",
"Processing nmd2018bas_ogeneraliserad_v1_1.tif [1/1] : 0...10...20...30...40...50...60...70...80...90...100 - done.\n",
"rms/ramsarid_429.gpkg\n",
"Copying color table from nmd2018bas_ogeneraliserad_v1_1.tif to new file.\n",
"Creating output file that is 1831P x 2819L.\n",
"Processing nmd2018bas_ogeneraliserad_v1_1.tif [1/1] : 0...10...20...30...40...50...60...70...80...90...100 - done.\n",
"rms/ramsarid_430.gpkg\n",
"Copying color table from nmd2018bas_ogeneraliserad_v1_1.tif to new file.\n",
"Creating output file that is 647P x 1604L.\n",
"Processing nmd2018bas_ogeneraliserad_v1_1.tif [1/1] : 0...10...20...30...40...50...60...70...80...90...100 - done.\n",
"rms/ramsarid_431.gpkg\n",
"Copying color table from nmd2018bas_ogeneraliserad_v1_1.tif to new file.\n",
"Creating output file that is 1962P x 1036L.\n",
"Processing nmd2018bas_ogeneraliserad_v1_1.tif [1/1] : 0...10...20...30...40...50...60...70...80...90...100 - done.\n",
"rms/ramsarid_432.gpkg\n",
"Copying color table from nmd2018bas_ogeneraliserad_v1_1.tif to new file.\n",
"Creating output file that is 1120P x 1022L.\n",
"Processing nmd2018bas_ogeneraliserad_v1_1.tif [1/1] : 0...10...20...30...40...50...60...70...80...90...100 - done.\n",
"rms/ramsarid_433.gpkg\n",
"Copying color table from nmd2018bas_ogeneraliserad_v1_1.tif to new file.\n",
"Creating output file that is 539P x 694L.\n",
"Processing nmd2018bas_ogeneraliserad_v1_1.tif [1/1] : 0...10...20...30...40...50...60...70...80...90...100 - done.\n",
"rms/ramsarid_434.gpkg\n",
"Copying color table from nmd2018bas_ogeneraliserad_v1_1.tif to new file.\n",
"Creating output file that is 1248P x 1514L.\n",
"Processing nmd2018bas_ogeneraliserad_v1_1.tif [1/1] : 0...10...20...30...40...50...60...70...80...90...100 - done.\n",
"rms/ramsarid_435.gpkg\n",
"Copying color table from nmd2018bas_ogeneraliserad_v1_1.tif to new file.\n",
"Creating output file that is 2131P x 1433L.\n",
"Processing nmd2018bas_ogeneraliserad_v1_1.tif [1/1] : 0...10...20...30...40...50...60...70...80...90...100 - done.\n",
"rms/ramsarid_436.gpkg\n",
"Copying color table from nmd2018bas_ogeneraliserad_v1_1.tif to new file.\n",
"Creating output file that is 937P x 1652L.\n",
"Processing nmd2018bas_ogeneraliserad_v1_1.tif [1/1] : 0...10...20...30...40...50...60...70...80...90...100 - done.\n",
"rms/ramsarid_437.gpkg\n",
"Copying color table from nmd2018bas_ogeneraliserad_v1_1.tif to new file.\n",
"Creating output file that is 1353P x 2170L.\n",
"Processing nmd2018bas_ogeneraliserad_v1_1.tif [1/1] : 0...10...20...30...40...50...60...70...80...90...100 - done.\n",
"rms/ramsarid_438.gpkg\n",
"Copying color table from nmd2018bas_ogeneraliserad_v1_1.tif to new file.\n",
"Creating output file that is 687P x 666L.\n",
"Processing nmd2018bas_ogeneraliserad_v1_1.tif [1/1] : 0...10...20...30...40...50...60...70...80...90...100 - done.\n"
]
}
],
"source": [
"%%bash\n",
"for file in rms/*.gpkg; do echo $file; filename=$(basename $file .gpkg); gdalwarp -overwrite -srcnodata 0 -dstnodata 0 -crop_to_cutline -cutline $file nmd2018bas_ogeneraliserad_v1_1.tif clipped/${filename}.tif; done"
]
},
{
"cell_type": "markdown",
"id": "2e5117c0",
"metadata": {},
"source": [
"Now that we have our clipped land cover we can calculate the histogram (in percentage)"
]
},
{
"cell_type": "code",
"execution_count": 105,
"id": "929f09d0",
"metadata": {
"collapsed": true,
"jupyter": {
"outputs_hidden": true
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"clipped/ramsarid_1113.tif\n",
"clipped/ramsarid_1114.tif\n",
"clipped/ramsarid_1115.tif\n",
"clipped/ramsarid_1116.tif\n",
"clipped/ramsarid_1117.tif\n",
"clipped/ramsarid_1118.tif\n",
"clipped/ramsarid_1119.tif\n",
"clipped/ramsarid_1120.tif\n",
"clipped/ramsarid_1121.tif\n",
"clipped/ramsarid_1122.tif\n",
"clipped/ramsarid_1123.tif\n",
"clipped/ramsarid_1124.tif\n",
"clipped/ramsarid_1125.tif\n",
"clipped/ramsarid_1126.tif\n",
"clipped/ramsarid_1127.tif\n",
"clipped/ramsarid_1128.tif\n",
"clipped/ramsarid_1129.tif\n",
"clipped/ramsarid_1130.tif\n",
"clipped/ramsarid_1131.tif\n",
"clipped/ramsarid_1132.tif\n",
"clipped/ramsarid_1133.tif\n",
"clipped/ramsarid_14.tif\n",
"clipped/ramsarid_15.tif\n",
"clipped/ramsarid_16.tif\n",
"clipped/ramsarid_17.tif\n",
"clipped/ramsarid_18.tif\n",
"clipped/ramsarid_19.tif\n",
"clipped/ramsarid_20.tif\n",
"clipped/ramsarid_2167.tif\n",
"clipped/ramsarid_2168.tif\n",
"clipped/ramsarid_2169.tif\n",
"clipped/ramsarid_2170.tif\n",
"clipped/ramsarid_2171.tif\n",
"clipped/ramsarid_2172.tif\n",
"clipped/ramsarid_2173.tif\n",
"clipped/ramsarid_2174.tif\n",
"clipped/ramsarid_2175.tif\n",
"clipped/ramsarid_2176.tif\n",
"clipped/ramsarid_2177.tif\n",
"clipped/ramsarid_2178.tif\n",
"clipped/ramsarid_2179.tif\n",
"clipped/ramsarid_2180.tif\n",
"clipped/ramsarid_21.tif\n",
"clipped/ramsarid_2260.tif\n",
"clipped/ramsarid_2265.tif\n",
"clipped/ramsarid_22.tif\n",
"clipped/ramsarid_23.tif\n",
"clipped/ramsarid_24.tif\n",
"clipped/ramsarid_25.tif\n",
"clipped/ramsarid_26.tif\n",
"clipped/ramsarid_27.tif\n",
"clipped/ramsarid_28.tif\n",
"clipped/ramsarid_29.tif\n",
"clipped/ramsarid_30.tif\n",
"clipped/ramsarid_31.tif\n",
"clipped/ramsarid_32.tif\n",
"clipped/ramsarid_33.tif\n",
"clipped/ramsarid_429.tif\n",
"clipped/ramsarid_430.tif\n",
"clipped/ramsarid_431.tif\n",
"clipped/ramsarid_432.tif\n",
"clipped/ramsarid_433.tif\n",
"clipped/ramsarid_434.tif\n",
"clipped/ramsarid_435.tif\n",
"clipped/ramsarid_436.tif\n",
"clipped/ramsarid_437.tif\n",
"clipped/ramsarid_438.tif\n"
]
}
],
"source": [
"%%bash\n",
"for file in clipped/*.tif; do echo $file; filename=$(basename $file .tif); pkstat -hist -rel -src_min 2 -src_max 128 -i $file > hist/${filename}.txt; done"
]
},
{
"cell_type": "markdown",
"id": "20d96add",
"metadata": {},
"source": [
"Now we have the text file of our histograms we can extract our desired classes for each of our 67 wetlands\n",
"- we have 25 classess in total\n",
"- 7 of the classess are our main interest\n",
"\n",
" "
]
},
{
"cell_type": "markdown",
"id": "198c8d96",
"metadata": {},
"source": [
"Extract all 25 classes"
]
},
{
"cell_type": "code",
"execution_count": 106,
"id": "49b7ee6e",
"metadata": {
"collapsed": true,
"jupyter": {
"outputs_hidden": true
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"hist/ramsarid_1113.txt\n",
"hist/ramsarid_1114.txt\n",
"hist/ramsarid_1115.txt\n",
"hist/ramsarid_1116.txt\n",
"hist/ramsarid_1117.txt\n",
"hist/ramsarid_1118.txt\n",
"hist/ramsarid_1119.txt\n",
"hist/ramsarid_1120.txt\n",
"hist/ramsarid_1121.txt\n",
"hist/ramsarid_1122.txt\n",
"hist/ramsarid_1123.txt\n",
"hist/ramsarid_1124.txt\n",
"hist/ramsarid_1125.txt\n",
"hist/ramsarid_1126.txt\n",
"hist/ramsarid_1127.txt\n",
"hist/ramsarid_1128.txt\n",
"hist/ramsarid_1129.txt\n",
"hist/ramsarid_1130.txt\n",
"hist/ramsarid_1131.txt\n",
"hist/ramsarid_1132.txt\n",
"hist/ramsarid_1133.txt\n",
"hist/ramsarid_14.txt\n",
"hist/ramsarid_15.txt\n",
"hist/ramsarid_16.txt\n",
"hist/ramsarid_17.txt\n",
"hist/ramsarid_18.txt\n",
"hist/ramsarid_19.txt\n",
"hist/ramsarid_20.txt\n",
"hist/ramsarid_2167.txt\n",
"hist/ramsarid_2168.txt\n",
"hist/ramsarid_2169.txt\n",
"hist/ramsarid_2170.txt\n",
"hist/ramsarid_2171.txt\n",
"hist/ramsarid_2172.txt\n",
"hist/ramsarid_2173.txt\n",
"hist/ramsarid_2174.txt\n",
"hist/ramsarid_2175.txt\n",
"hist/ramsarid_2176.txt\n",
"hist/ramsarid_2177.txt\n",
"hist/ramsarid_2178.txt\n",
"hist/ramsarid_2179.txt\n",
"hist/ramsarid_2180.txt\n",
"hist/ramsarid_21.txt\n",
"hist/ramsarid_2260.txt\n",
"hist/ramsarid_2265.txt\n",
"hist/ramsarid_22.txt\n",
"hist/ramsarid_23.txt\n",
"hist/ramsarid_24.txt\n",
"hist/ramsarid_25.txt\n",
"hist/ramsarid_26.txt\n",
"hist/ramsarid_27.txt\n",
"hist/ramsarid_28.txt\n",
"hist/ramsarid_29.txt\n",
"hist/ramsarid_30.txt\n",
"hist/ramsarid_31.txt\n",
"hist/ramsarid_32.txt\n",
"hist/ramsarid_33.txt\n",
"hist/ramsarid_429.txt\n",
"hist/ramsarid_430.txt\n",
"hist/ramsarid_431.txt\n",
"hist/ramsarid_432.txt\n",
"hist/ramsarid_433.txt\n",
"hist/ramsarid_434.txt\n",
"hist/ramsarid_435.txt\n",
"hist/ramsarid_436.txt\n",
"hist/ramsarid_437.txt\n",
"hist/ramsarid_438.txt\n"
]
}
],
"source": [
"%%bash\n",
"#printf \"%s %.3f\\n\", $1, $2\n",
"for file in hist/*.txt; do echo $file; filename=$(basename $file .txt);\n",
"awk '{ if($1==111||$1==112||$1==113||$1==114||$1==115||$1==116||$1==117||$1==118||$1==121||$1==122||$1==123||$1==124||$1==125||$1==126||$1==127||$1==128||$1==2||$1==3||$1==41||$1==42||$1==51||$1==52||$1==53||$1==61||$1==62) print}' $file > class_25/${filename}.txt;done"
]
},
{
"cell_type": "markdown",
"id": "7723a208",
"metadata": {},
"source": [
"Extract 7 main classess of our interest"
]
},
{
"cell_type": "code",
"execution_count": 107,
"id": "727f8eb9",
"metadata": {
"collapsed": true,
"jupyter": {
"outputs_hidden": true
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"hist/ramsarid_1113.txt\n",
"hist/ramsarid_1114.txt\n",
"hist/ramsarid_1115.txt\n",
"hist/ramsarid_1116.txt\n",
"hist/ramsarid_1117.txt\n",
"hist/ramsarid_1118.txt\n",
"hist/ramsarid_1119.txt\n",
"hist/ramsarid_1120.txt\n",
"hist/ramsarid_1121.txt\n",
"hist/ramsarid_1122.txt\n",
"hist/ramsarid_1123.txt\n",
"hist/ramsarid_1124.txt\n",
"hist/ramsarid_1125.txt\n",
"hist/ramsarid_1126.txt\n",
"hist/ramsarid_1127.txt\n",
"hist/ramsarid_1128.txt\n",
"hist/ramsarid_1129.txt\n",
"hist/ramsarid_1130.txt\n",
"hist/ramsarid_1131.txt\n",
"hist/ramsarid_1132.txt\n",
"hist/ramsarid_1133.txt\n",
"hist/ramsarid_14.txt\n",
"hist/ramsarid_15.txt\n",
"hist/ramsarid_16.txt\n",
"hist/ramsarid_17.txt\n",
"hist/ramsarid_18.txt\n",
"hist/ramsarid_19.txt\n",
"hist/ramsarid_20.txt\n",
"hist/ramsarid_2167.txt\n",
"hist/ramsarid_2168.txt\n",
"hist/ramsarid_2169.txt\n",
"hist/ramsarid_2170.txt\n",
"hist/ramsarid_2171.txt\n",
"hist/ramsarid_2172.txt\n",
"hist/ramsarid_2173.txt\n",
"hist/ramsarid_2174.txt\n",
"hist/ramsarid_2175.txt\n",
"hist/ramsarid_2176.txt\n",
"hist/ramsarid_2177.txt\n",
"hist/ramsarid_2178.txt\n",
"hist/ramsarid_2179.txt\n",
"hist/ramsarid_2180.txt\n",
"hist/ramsarid_21.txt\n",
"hist/ramsarid_2260.txt\n",
"hist/ramsarid_2265.txt\n",
"hist/ramsarid_22.txt\n",
"hist/ramsarid_23.txt\n",
"hist/ramsarid_24.txt\n",
"hist/ramsarid_25.txt\n",
"hist/ramsarid_26.txt\n",
"hist/ramsarid_27.txt\n",
"hist/ramsarid_28.txt\n",
"hist/ramsarid_29.txt\n",
"hist/ramsarid_30.txt\n",
"hist/ramsarid_31.txt\n",
"hist/ramsarid_32.txt\n",
"hist/ramsarid_33.txt\n",
"hist/ramsarid_429.txt\n",
"hist/ramsarid_430.txt\n",
"hist/ramsarid_431.txt\n",
"hist/ramsarid_432.txt\n",
"hist/ramsarid_433.txt\n",
"hist/ramsarid_434.txt\n",
"hist/ramsarid_435.txt\n",
"hist/ramsarid_436.txt\n",
"hist/ramsarid_437.txt\n",
"hist/ramsarid_438.txt\n"
]
}
],
"source": [
"%%bash\n",
"for file in hist/*.txt; do echo $file; filename=$(basename $file .txt);\n",
" awk '$1==111 || $1==112 || $1==113 || $1==114 ||$1==115 || $1==116 ||$1==117 || $1==118 {sum1+= $2} \n",
"$1==121 || $1==122 || $1==123 || $1==124 ||$1==125 || $1==126 ||$1==127 || $1==128 {sum2+= $2} \n",
"$1==2 {sum3+= $2} \n",
"$1==3 {sum4+= $2} \n",
"$1==41 || $1==42 {sum5+= $2} \n",
"$1==51 || $1==52 || $1==53 {sum6+= $2} \n",
"$1==61 || $1==62 {sum7+= $2} \n",
"END{print (\"1.1 \"sum1); print (\"1.2 \"sum2); print(\"2 \"sum3); print(\"3 \"sum4); print(\"4 \"sum5); print(\"5 \"sum6); print(\"6 \"sum7)}' $file > class_7/${filename}.txt;done"
]
},
{
"cell_type": "raw",
"id": "01e97cf3",
"metadata": {},
"source": [
"Now we want to add header to each of the text files "
]
},
{
"cell_type": "code",
"execution_count": 108,
"id": "11a1fffb",
"metadata": {
"collapsed": true,
"jupyter": {
"outputs_hidden": true
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"class_7/ramsarid_1113.txt\n",
"class_7/ramsarid_1114.txt\n",
"class_7/ramsarid_1115.txt\n",
"class_7/ramsarid_1116.txt\n",
"class_7/ramsarid_1117.txt\n",
"class_7/ramsarid_1118.txt\n",
"class_7/ramsarid_1119.txt\n",
"class_7/ramsarid_1120.txt\n",
"class_7/ramsarid_1121.txt\n",
"class_7/ramsarid_1122.txt\n",
"class_7/ramsarid_1123.txt\n",
"class_7/ramsarid_1124.txt\n",
"class_7/ramsarid_1125.txt\n",
"class_7/ramsarid_1126.txt\n",
"class_7/ramsarid_1127.txt\n",
"class_7/ramsarid_1128.txt\n",
"class_7/ramsarid_1129.txt\n",
"class_7/ramsarid_1130.txt\n",
"class_7/ramsarid_1131.txt\n",
"class_7/ramsarid_1132.txt\n",
"class_7/ramsarid_1133.txt\n",
"class_7/ramsarid_14.txt\n",
"class_7/ramsarid_15.txt\n",
"class_7/ramsarid_16.txt\n",
"class_7/ramsarid_17.txt\n",
"class_7/ramsarid_18.txt\n",
"class_7/ramsarid_19.txt\n",
"class_7/ramsarid_20.txt\n",
"class_7/ramsarid_2167.txt\n",
"class_7/ramsarid_2168.txt\n",
"class_7/ramsarid_2169.txt\n",
"class_7/ramsarid_2170.txt\n",
"class_7/ramsarid_2171.txt\n",
"class_7/ramsarid_2172.txt\n",
"class_7/ramsarid_2173.txt\n",
"class_7/ramsarid_2174.txt\n",
"class_7/ramsarid_2175.txt\n",
"class_7/ramsarid_2176.txt\n",
"class_7/ramsarid_2177.txt\n",
"class_7/ramsarid_2178.txt\n",
"class_7/ramsarid_2179.txt\n",
"class_7/ramsarid_2180.txt\n",
"class_7/ramsarid_21.txt\n",
"class_7/ramsarid_2260.txt\n",
"class_7/ramsarid_2265.txt\n",
"class_7/ramsarid_22.txt\n",
"class_7/ramsarid_23.txt\n",
"class_7/ramsarid_24.txt\n",
"class_7/ramsarid_25.txt\n",
"class_7/ramsarid_26.txt\n",
"class_7/ramsarid_27.txt\n",
"class_7/ramsarid_28.txt\n",
"class_7/ramsarid_29.txt\n",
"class_7/ramsarid_30.txt\n",
"class_7/ramsarid_31.txt\n",
"class_7/ramsarid_32.txt\n",
"class_7/ramsarid_33.txt\n",
"class_7/ramsarid_429.txt\n",
"class_7/ramsarid_430.txt\n",
"class_7/ramsarid_431.txt\n",
"class_7/ramsarid_432.txt\n",
"class_7/ramsarid_433.txt\n",
"class_7/ramsarid_434.txt\n",
"class_7/ramsarid_435.txt\n",
"class_7/ramsarid_436.txt\n",
"class_7/ramsarid_437.txt\n",
"class_7/ramsarid_438.txt\n"
]
}
],
"source": [
"%%bash\n",
"for file in class_7/*.txt; do echo $file; filename=$(basename $file .txt);\n",
"awk 'BEGIN{print \"Class Ratio\"}1' $file > head/${filename}.txt; done #The 1 is to indicate to print every line of the file."
]
},
{
"cell_type": "code",
"execution_count": 76,
"id": "c68ffdad",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Collecting matplotlib\n",
" Downloading matplotlib-3.4.2-cp38-cp38-manylinux1_x86_64.whl (10.3 MB)\n",
"\u001b[K |████████████████████████████████| 10.3 MB 7.9 MB/s eta 0:00:01\n",
"\u001b[?25hCollecting pillow>=6.2.0\n",
" Downloading Pillow-8.2.0-cp38-cp38-manylinux1_x86_64.whl (3.0 MB)\n",
"\u001b[K |████████████████████████████████| 3.0 MB 17.5 MB/s eta 0:00:01\n",
"\u001b[?25hRequirement already satisfied: numpy>=1.16 in /home/user/miniconda3/lib/python3.8/site-packages (from matplotlib) (1.20.1)\n",
"Collecting cycler>=0.10\n",
" Downloading cycler-0.10.0-py2.py3-none-any.whl (6.5 kB)\n",
"Requirement already satisfied: python-dateutil>=2.7 in /home/user/miniconda3/lib/python3.8/site-packages (from matplotlib) (2.8.1)\n",
"Collecting kiwisolver>=1.0.1\n",
" Downloading kiwisolver-1.3.1-cp38-cp38-manylinux1_x86_64.whl (1.2 MB)\n",
"\u001b[K |████████████████████████████████| 1.2 MB 54.3 MB/s eta 0:00:01\n",
"\u001b[?25hRequirement already satisfied: pyparsing>=2.2.1 in /home/user/miniconda3/lib/python3.8/site-packages (from matplotlib) (2.4.7)\n",
"Requirement already satisfied: six in /home/user/miniconda3/lib/python3.8/site-packages (from cycler>=0.10->matplotlib) (1.15.0)\n",
"Installing collected packages: pillow, cycler, kiwisolver, matplotlib\n",
"Successfully installed cycler-0.10.0 kiwisolver-1.3.1 matplotlib-3.4.2 pillow-8.2.0\n",
"Note: you may need to restart the kernel to use updated packages.\n"
]
}
],
"source": [
"pip install matplotlib"
]
},
{
"cell_type": "code",
"execution_count": 110,
"id": "3a781a96",
"metadata": {
"collapsed": true,
"jupyter": {
"outputs_hidden": true
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"ramsarid_1113\n"
]
},
{
"data": {
"image/png": "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trm/+eabZxYvXuxX8t+eEEJULMOaoVatWuW7bt26WA8PD+23336rMW/evKtmxQYGBma/8sortXfs2OH+0EMPpQIsX7685vLly2t27do1Me+8Xr16JT399NPBzz33XP2kpCSnRYsWHXNzc7tq8kjTpk0zxo8fH7h///4aHTp0uGb7UT8/v9zAwMDsKVOm1N66datHaGjo5QlPffv2TSrYfzFixIjz4eHh9ZydnRkyZMh5uDLBbujQofF9+vQJyc7OVjNnzryqP0Um2AkhKiu7m5QnKh+ZlCdE1SdDZ4UQQhRJkoUQQogiSbIQQghRpOJ3cEerUk3KI0yTbVWFEKKSs7ttVfO2OV27dq3nW2+95V+csgobwnqzSrPdanGuefXVV2s3a9bs1piYGFfQt18NCwsL6tSpU6OpU6de9XqXLl3qExYWFvTggw+a169f7573fFhYWNDQoUPr5z932rRp/uPHjw/86KOPfDIzM9XAgQMblDR+IYS4HrvaVjUrK+tsbGxsjXHjxtW5//77U3/88Ufvw4cPV8/MzDR9/PHHxz744APfbdu2eaSkpJjGjBlzbuXKlb4XLlxwuvPOO9NGjx6dALBnz57qEydOrOvq6mrt2rVrUps2bdL69u3bqEePHhcOHDjg+tFHHx1btGjRNeWkpKSYnJ2dtaZNm2bklQXw4osv1jl//rxzYGBg9ttvv33moYceMrdr1y5l7969NcaNG3e2fv362UOHDg1q1KhR5unTp6+ZEFjQq6++ejY5OfnyvJG77rorIzo6+lhubi49e/ZsCMTnHevfv39i//79Ezdv3lzju+++8+rQocOlxYsX+7Zp0ybtr7/+umoy39GjR6vNnj375MiRI+sdOXKk2tixY6/ZY0MIIUrLsJrFnj17arRr1y4Nrmyr2qFDh9TQ0ND0adOmnQZo06ZN6gcffHAiISHBGWD+/PkB3t7euf7+/jlbtmxxBwgLC7uQ/8191qxZ/lOnTj25YsWKo8uWLasJEBoamj5p0qRzoaGhGT/99JN7YeX07dv34rx5807++OOPXnll5ebmYrVa8fLyyl2zZs3l3fWmTJlydvz48WdXr17tvWTJkprDhg2Lnz179klnZ+frj0O+gWXLlnk/9NBDoY899tg161FNmTKldnh4eFDXrl2Tjx8/7rxz5063zp07XzNX5LHHHkseO3Zs3X/8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\n",
"text/plain": [
"