Thursday, December 12, 2024

Preparing a Flag map of Africa 24 Teams Set For AFCON 2025 In Morocco

 This task consist of two parts, the GIS and Graphic Design parts. To complete the task, I will use two software namely QGIS for the GIS part of the project and GIMP for the graphic design part of the project.

Data Sources:

  • The Map is the world map from QGIS resource data
  • The Flags were made by Hampus Nilsson

Procedures
Step 1: Using the QGIS software, query the world map for African countries and the 24 teams that qualified for the AFCON 2025 as seen below.



Now we know the countries to be designed with flags respectively.

Step 2: Lets make sure the flags we downloaded are available for the 24 countries. The flag source uses two alphabets to name the flags, this could be challenging but fortunately there is a JSON file in the directory the associalte the two two alphabet code with the full name of the countries.


'BW, 'EG', 'ZR', 'SD', 'ZM', 'NG', 'BJ', 'UG', 'TZ', 'GA', 'CI', 'DZ', 'SN', 'CM', 'GQ', 'BF', 'MZ', 'ZA', 'MA', 'TN', 'AO', 'KM', 'ML', 'ZW'

The 'WB_A2' attribute column matches the names of the flags, so that is what we will use the get the names of the country for each flag.

Saturday, December 7, 2024

How to make country flag map in QGIS

Using graphics software like GIMP/Photoshop, Inkscape/Illustrator, we could fill polygons shapes with an image easily, now how do we do the same in QGIS?


Yes, QGIS is not a graphic software yet it has the capability to fill polygons shapes with an image. Let make use of a flag image to fill a country's polygon shape. I will use Nigerian flag and its boundary polygon shape for this demonstration however, you can prety much use any image with any polygon shape of your chosen.

In other words, all we are doing is to insert image in shape in QGIS. Lets see how we can achieve it.

First get the image flag and the vector polygon of Nigeria administrative boundaries.

Now, from the polygon's property window, open symbology tab and select 'Raster Image Fill' as seen below. You can now set path to the image, set the size of the image, set its opacity, etc as you require fit.


One important setting that determine if the image fills the entire polygon layer or each polygon shape in the layer is the "Coord mode" which can either be det to 'object' or 'viewport'.


With some tweaks and tricks, we can achieve what the graphics tool can do in QGIS. Though this kind of map designs are effectively done in the graphics software.

Happy mapping.

Sunday, December 1, 2024

50 Globe Projections Types in QGIS

 A globe projection, also known as a map projection, is a method for representing the Earth's surface on a flat surface, such as a map or computer screen.

Lets see the following 50 map projections in QGIS software;-
(1) Natural Earth Projection - EPSG: 54077
(2) Sphere Aitoff Projection - EPSG: 53043
(3) World Azimuthal Equidistant Projection - EPSG: 54032
(4) Sphere Behrmann Projection - EPSG: 53017
(5) Sphere Bonne Projection - EPSG: 53024
(6) World Cassini Projection - EPSG: 54028
(7) Sphere Compact Miller Projection - EPSG: 53080
(8) Sphere Craster Parabolic Projection - EPSG: 53046
(9) Equal Area Cylindrical Projection - EPSG: 54034
(10) Eckert-1 Projection - EPSG: 53015
(11) Eckert-2 Projection - EPSG: 53014
(12) Eckert-3 Projection - EPSG: 53013
(13) Eckert-4 Projection - EPSG: 53012
(14) Eckert-5 Projection - EPSG: 53011
(15) Eckert-6 Projection - EPSG: 53010
(16) Sphere Equal Earth Americas Projection - EPSG: 53036
(17) Africa Equidistant Conic Projection - EPSG: 102023
(18) World Equidistant Cylindrical Projection - EPSG: 4088
(19) Sphere Flat Polar Quartic Projection - EPSG: 53045
(20) Gall Stereographic Projection - EPSG: 53016
(21) Gall and Peters Projection - EPSG: 100000
(22) Goode Homolosine Land Projection - EPSG: 54052
(23) Google Maps Global Mercator Projection Projection - EPSG: 900913
(24) MILLER GEOPORTAIL Projection - EPSG: MILLER
(25) North Pole LAEA Alaska Projection Projection - EPSG: 3572
(26) American Samoa Lambert Projection - EPSG: 2155
(27) South Pole Orthographic Projection - EPSG: 102037
(28) North Pole Orthographic Projection - EPSG: 102035
(29) NSIDC EASE-Grid Global Projection - EPSG: 3410
(30) Patterson Projection - EPSG: 53079
(31) Plate Caree Projection - EPSG: 32662
(32) Panama Polyconic Projection - EPSG: 5472
(33) Polyconic Projection - EPSG: 53021
(34) Quartic Authalic Projection - EPSG: 53022
(35) ICS Robinson Projection - EPSG: 102926
(36) Africa Sinusoidal Projection - EPSG: 102011
(37) JAXA Snow Depth Polar Stereographic North Projection - EPSG: 5890
(38) Times Projection - EPSG: 53048
(39) Vanua Levu 1915 Projection - EPSG: 4748
(40) Vertical Perspective Projection - EPSG: 53049
(41) Wagner IV Projection - EPSG: 53074
(42) Winkel I Projection - EPSG: 53018
(43) Winkel II Projection - EPSG: 53019
(44) Winkel Tripel NGS Projection - EPSG: 53042
(45) MAGNA Leticia Amazonas 1994 Projection - EPSG: 102767
(46) Mexico ITRF2008 Projection - EPSG: 6363
(47) Equal Earth Asia Pacific Projection - EPSG: 53037
(48) France Metropolitaine projection Geoportail Projection - EPSG: GEOPORTALFXX
(49) RRAF 1991 Projection - EPSG: 4640
(50) S-JTSK Krovak East North  Projection - EPSG: 102067





Wednesday, September 25, 2024

Fantasy Maps, Fantasy Cartography, Fictional Map-making, or Geofiction

Over the years, I have encountered clients who needed fantasy maps for books or novels which they are writing. These authors usually contract me to develop an imaginative map to complement the characters or world they are building in their storyline.

I will like to call these type of fantasy maps as imaginative map or mystic maps or mythical maps or adventure maps or fictional maps or map of nowhere. Whatever you decide to call such maps, it is basically a map that doesn't represent any location in the real world.

In this post, let's take a look at: What is a fantasy map? What professionals are responsible for making fantasy map? How to make a fantasy map? What technical skills are required for making fantasy maps? What elements are required to be shown on a fantasy map?


What is a fantasy map?

According to Wikipedia, fantasy map is a type of map design that visually presents an imaginary world or concept, or represents a real-world geography in a fantastic style.


Where are fantasy maps use?

Fantasy maps are used in a variety of contexts, primarily where imagination and creativity play a significant role such as in novel/book, Role-Playing Game (RPG), film/drama, or just for fun story telling.


What professionals are responsible for making fantasy map?

Cartographers are the professionals primarily responsible for creating fantasy maps. While the term "cartographer" is often associated with real-world geography, it can also extend to the imaginative realms of fantasy.

In addition to cartographers, artists, writers, and game designers also contribute to the creation of fantasy maps. Artists visualize the map, bringing it to life with illustrations and colors. Writers develop the backstory and lore of the fantasy world, providing context for the map. Game designers incorporate the map into the gameplay, ensuring that it is both visually appealing and functional.


What technical skills are required for making fantasy maps?

Technical Skills for Making Fantasy Maps are;-

  • Drawing and Illustration skills
  • Design and Layout skills
  • Geography and Cartography skills


What elements are required to be shown on a fantasy map?

The Essential Elements for a Fantasy Map include: Landmasses, Bodies of water, Terrain, Borders, Roads, Enchanted forests, Compass rose, Legend or key.


How to make a fantasy map?

Since fantasy maps are not really representing a geographical location in reality, a GIS software won't be necessary. There are tools/software that specializes in making fantasy maps such as:

This tools mainly focus on bringing imaginations into map instead of enforcing geographic location representation.

Also if you are skilled in graphic design software such as Photoshop, GIMP, Inkscape, Coreldraw etc you could make fantasy maps.


Examples of fantasy maps

A fantastic examples of fantasy maps I found is that in the portfolio by Deranged Doctor Design (DDD). On the DDD portfolio page, you will see several examples of how a digital fantasy map was made out of hand drawn imagination.

Another source is the MapEffects.co by Josh Stolarz

Another example is "The Edge Chronicles started with the map"

Also meet Jessica Khoury with beautiful fictional maps in her portfolio.

Monday, September 2, 2024

Extracting image Geographic metadata in Python

 Here I got hundreds of pictures captured during a field trip. Each picture has its GPS or geographical coordinates embedded in its metadata. These pictures' metadata are stored in EXIF standard (read about other standards from this link). EXIF stands for Exchangeable Image File Format. It stores technical information about an image and its capture method, such as exposure settings, capture time, GPS location information and camera model.



The EXIF metadata can contain many attributes (approximately 270 attributes) as listed below. This attribute will depend on the camera capability and the purpose of the picture captured.

InteropIndex, ProcessingSoftware, NewSubfileType, SubfileType, ImageWidth, ImageLength, BitsPerSample, Compression, PhotometricInterpretation, Thresholding, CellWidth, CellLength, FillOrder, DocumentName, ImageDescription, Make, Model, StripOffsets, Orientation, SamplesPerPixel, RowsPerStrip, StripByteCounts, MinSampleValue, MaxSampleValue, XResolution, YResolution, PlanarConfiguration, PageName, FreeOffsets, FreeByteCounts, GrayResponseUnit, GrayResponseCurve, T4Options, T6Options, ResolutionUnit, PageNumber, TransferFunction, Software, DateTime, Artist, HostComputer, Predictor, WhitePoint, PrimaryChromaticities, ColorMap, HalftoneHints, TileWidth, TileLength, TileOffsets, TileByteCounts, SubIFDs, InkSet, InkNames, NumberOfInks, DotRange, TargetPrinter, ExtraSamples, SampleFormat, SMinSampleValue, SMaxSampleValue, TransferRange, ClipPath, XClipPathUnits, YClipPathUnits, Indexed, JPEGTables, OPIProxy, JPEGProc, JpegIFOffset, JpegIFByteCount, JpegRestartInterval, JpegLosslessPredictors, JpegPointTransforms, JpegQTables, JpegDCTables, JpegACTables, YCbCrCoefficients, YCbCrSubSampling, YCbCrPositioning, ReferenceBlackWhite, XMLPacket, RelatedImageFileFormat, RelatedImageWidth, RelatedImageLength, Rating, RatingPercent, ImageID, CFARepeatPatternDim, BatteryLevel, Copyright, ExposureTime, FNumber, IPTCNAA, ImageResources, ExifOffset, InterColorProfile, ExposureProgram, SpectralSensitivity, GPSInfo, ISOSpeedRatings, OECF, Interlace, TimeZoneOffset, SelfTimerMode, SensitivityType, StandardOutputSensitivity, RecommendedExposureIndex, ISOSpeed, ISOSpeedLatitudeyyy, ISOSpeedLatitudezzz, ExifVersion, DateTimeOriginal, DateTimeDigitized, OffsetTime, OffsetTimeOriginal, OffsetTimeDigitized, ComponentsConfiguration, CompressedBitsPerPixel, ShutterSpeedValue, ApertureValue, BrightnessValue, ExposureBiasValue, MaxApertureValue, SubjectDistance, MeteringMode, LightSource, Flash, FocalLength, Noise, ImageNumber, SecurityClassification, ImageHistory, TIFF/EPStandardID, MakerNote, UserComment, SubsecTime, SubsecTimeOriginal, SubsecTimeDigitized, AmbientTemperature, Humidity, Pressure, WaterDepth, Acceleration, CameraElevationAngle, XPTitle, XPComment, XPAuthor, XPKeywords, XPSubject, FlashPixVersion, ColorSpace, ExifImageWidth, ExifImageHeight, RelatedSoundFile, ExifInteroperabilityOffset, FlashEnergy, SpatialFrequencyResponse, FocalPlaneXResolution, FocalPlaneYResolution, FocalPlaneResolutionUnit, SubjectLocation, ExposureIndex, SensingMethod, FileSource, SceneType, CFAPattern, CustomRendered, ExposureMode, WhiteBalance, DigitalZoomRatio, FocalLengthIn35mmFilm, SceneCaptureType, GainControl, Contrast, Saturation, Sharpness, DeviceSettingDescription, SubjectDistanceRange, ImageUniqueID, CameraOwnerName, BodySerialNumber, LensSpecification, LensMake, LensModel, LensSerialNumber, CompositeImage, CompositeImageCount, CompositeImageExposureTimes, Gamma, PrintImageMatching, DNGVersion, DNGBackwardVersion, UniqueCameraModel, LocalizedCameraModel, CFAPlaneColor, CFALayout, LinearizationTable, BlackLevelRepeatDim, BlackLevel, BlackLevelDeltaH, BlackLevelDeltaV, WhiteLevel, DefaultScale, DefaultCropOrigin, DefaultCropSize, ColorMatrix1, ColorMatrix2, CameraCalibration1, CameraCalibration2, ReductionMatrix1, ReductionMatrix2, AnalogBalance, AsShotNeutral, AsShotWhiteXY, BaselineExposure, BaselineNoise, BaselineSharpness, BayerGreenSplit, LinearResponseLimit, CameraSerialNumber, LensInfo, ChromaBlurRadius, AntiAliasStrength, ShadowScale, DNGPrivateData, MakerNoteSafety, CalibrationIlluminant1, CalibrationIlluminant2, BestQualityScale, RawDataUniqueID, OriginalRawFileName, OriginalRawFileData, ActiveArea, MaskedAreas, AsShotICCProfile, AsShotPreProfileMatrix, CurrentICCProfile, CurrentPreProfileMatrix, ColorimetricReference, CameraCalibrationSignature, ProfileCalibrationSignature, AsShotProfileName, NoiseReductionApplied, ProfileName, ProfileHueSatMapDims, ProfileHueSatMapData1, ProfileHueSatMapData2, ProfileToneCurve, ProfileEmbedPolicy, ProfileCopyright, ForwardMatrix1, ForwardMatrix2, PreviewApplicationName, PreviewApplicationVersion, PreviewSettingsName, PreviewSettingsDigest, PreviewColorSpace, PreviewDateTime, RawImageDigest, OriginalRawFileDigest, SubTileBlockSize, RowInterleaveFactor, ProfileLookTableDims, ProfileLookTableData, OpcodeList1, OpcodeList2, OpcodeList3, NoiseProfile, SpatialFrequencyResponse, SubjectLocation, ExposureIndex, CFAPattern, FlashEnergy

In our case here, the EXIF metadata attribute we are interested in is the GPSInfo. As seen above, it contains the latitude, longitude and altitude of the picture.

Lets extract this attribute information using python.

We are going to use the PIL library to read the EXIF metadata into pandas dataframe. Lets import the required modules.

import glob
import pandas as pd
from PIL import Image, ExifTags
from PIL.ExifTags import TAGS


The dictionary of all available EXIF metadata attributes can be accessed using ExifTags.TAGS as follow:-

{1: 'InteropIndex', 11: 'ProcessingSoftware', 254: 'NewSubfileType', 255: 'SubfileType', 256: 'ImageWidth', 257: 'ImageLength', 258: 'BitsPerSample', 259: 'Compression', 262: 'PhotometricInterpretation', 263: 'Thresholding', 264: 'CellWidth', 265: 'CellLength', 266: 'FillOrder', 269: 'DocumentName', 270: 'ImageDescription', 271: 'Make', 272: 'Model', 273: 'StripOffsets', 274: 'Orientation', 277: 'SamplesPerPixel', 278: 'RowsPerStrip', 279: 'StripByteCounts', 280: 'MinSampleValue', 281: 'MaxSampleValue', 282: 'XResolution', 283: 'YResolution', 284: 'PlanarConfiguration', 285: 'PageName', 288: 'FreeOffsets', 289: 'FreeByteCounts', 290: 'GrayResponseUnit', 291: 'GrayResponseCurve', 292: 'T4Options', 293: 'T6Options', 296: 'ResolutionUnit', 297: 'PageNumber', 301: 'TransferFunction', 305: 'Software', 306: 'DateTime', 315: 'Artist', 316: 'HostComputer', 317: 'Predictor', 318: 'WhitePoint', 319: 'PrimaryChromaticities', 320: 'ColorMap', 321: 'HalftoneHints', 322: 'TileWidth', 323: 'TileLength', 324: 'TileOffsets', 325: 'TileByteCounts', 330: 'SubIFDs', 332: 'InkSet', 333: 'InkNames', 334: 'NumberOfInks', 336: 'DotRange', 337: 'TargetPrinter', 338: 'ExtraSamples', 339: 'SampleFormat', 340: 'SMinSampleValue', 341: 'SMaxSampleValue', 342: 'TransferRange', 343: 'ClipPath', 344: 'XClipPathUnits', 345: 'YClipPathUnits', 346: 'Indexed', 347: 'JPEGTables', 351: 'OPIProxy', 512: 'JPEGProc', 513: 'JpegIFOffset', 514: 'JpegIFByteCount', 515: 'JpegRestartInterval', 517: 'JpegLosslessPredictors', 518: 'JpegPointTransforms', 519: 'JpegQTables', 520: 'JpegDCTables', 521: 'JpegACTables', 529: 'YCbCrCoefficients', 530: 'YCbCrSubSampling', 531: 'YCbCrPositioning', 532: 'ReferenceBlackWhite', 700: 'XMLPacket', 4096: 'RelatedImageFileFormat', 4097: 'RelatedImageWidth', 4098: 'RelatedImageLength', 18246: 'Rating', 18249: 'RatingPercent', 32781: 'ImageID', 33421: 'CFARepeatPatternDim', 33423: 'BatteryLevel', 33432: 'Copyright', 33434: 'ExposureTime', 33437: 'FNumber', 33723: 'IPTCNAA', 34377: 'ImageResources', 34665: 'ExifOffset', 34675: 'InterColorProfile', 34850: 'ExposureProgram', 34852: 'SpectralSensitivity', 34853: 'GPSInfo', 34855: 'ISOSpeedRatings', 34856: 'OECF', 34857: 'Interlace', 34858: 'TimeZoneOffset', 34859: 'SelfTimerMode', 34864: 'SensitivityType', 34865: 'StandardOutputSensitivity', 34866: 'RecommendedExposureIndex', 34867: 'ISOSpeed', 34868: 'ISOSpeedLatitudeyyy', 34869: 'ISOSpeedLatitudezzz', 36864: 'ExifVersion', 36867: 'DateTimeOriginal', 36868: 'DateTimeDigitized', 36880: 'OffsetTime', 36881: 'OffsetTimeOriginal', 36882: 'OffsetTimeDigitized', 37121: 'ComponentsConfiguration', 37122: 'CompressedBitsPerPixel', 37377: 'ShutterSpeedValue', 37378: 'ApertureValue', 37379: 'BrightnessValue', 37380: 'ExposureBiasValue', 37381: 'MaxApertureValue', 37382: 'SubjectDistance', 37383: 'MeteringMode', 37384: 'LightSource', 37385: 'Flash', 37386: 'FocalLength', 37389: 'Noise', 37393: 'ImageNumber', 37394: 'SecurityClassification', 37395: 'ImageHistory', 37398: 'TIFF/EPStandardID', 37500: 'MakerNote', 37510: 'UserComment', 37520: 'SubsecTime', 37521: 'SubsecTimeOriginal', 37522: 'SubsecTimeDigitized', 37888: 'AmbientTemperature', 37889: 'Humidity', 37890: 'Pressure', 37891: 'WaterDepth', 37892: 'Acceleration', 37893: 'CameraElevationAngle', 40091: 'XPTitle', 40092: 'XPComment', 40093: 'XPAuthor', 40094: 'XPKeywords', 40095: 'XPSubject', 40960: 'FlashPixVersion', 40961: 'ColorSpace', 40962: 'ExifImageWidth', 40963: 'ExifImageHeight', 40964: 'RelatedSoundFile', 40965: 'ExifInteroperabilityOffset', 41483: 'FlashEnergy', 41484: 'SpatialFrequencyResponse', 41486: 'FocalPlaneXResolution', 41487: 'FocalPlaneYResolution', 41488: 'FocalPlaneResolutionUnit', 41492: 'SubjectLocation', 41493: 'ExposureIndex', 41495: 'SensingMethod', 41728: 'FileSource', 41729: 'SceneType', 41730: 'CFAPattern', 41985: 'CustomRendered', 41986: 'ExposureMode', 41987: 'WhiteBalance', 41988: 'DigitalZoomRatio', 41989: 'FocalLengthIn35mmFilm', 41990: 'SceneCaptureType', 41991: 'GainControl', 41992: 'Contrast', 41993: 'Saturation', 41994: 'Sharpness', 41995: 'DeviceSettingDescription', 41996: 'SubjectDistanceRange', 42016: 'ImageUniqueID', 42032: 'CameraOwnerName', 42033: 'BodySerialNumber', 42034: 'LensSpecification', 42035: 'LensMake', 42036: 'LensModel', 42037: 'LensSerialNumber', 42080: 'CompositeImage', 42081: 'CompositeImageCount', 42082: 'CompositeImageExposureTimes', 42240: 'Gamma', 50341: 'PrintImageMatching', 50706: 'DNGVersion', 50707: 'DNGBackwardVersion', 50708: 'UniqueCameraModel', 50709: 'LocalizedCameraModel', 50710: 'CFAPlaneColor', 50711: 'CFALayout', 50712: 'LinearizationTable', 50713: 'BlackLevelRepeatDim', 50714: 'BlackLevel', 50715: 'BlackLevelDeltaH', 50716: 'BlackLevelDeltaV', 50717: 'WhiteLevel', 50718: 'DefaultScale', 50719: 'DefaultCropOrigin', 50720: 'DefaultCropSize', 50721: 'ColorMatrix1', 50722: 'ColorMatrix2', 50723: 'CameraCalibration1', 50724: 'CameraCalibration2', 50725: 'ReductionMatrix1', 50726: 'ReductionMatrix2', 50727: 'AnalogBalance', 50728: 'AsShotNeutral', 50729: 'AsShotWhiteXY', 50730: 'BaselineExposure', 50731: 'BaselineNoise', 50732: 'BaselineSharpness', 50733: 'BayerGreenSplit', 50734: 'LinearResponseLimit', 50735: 'CameraSerialNumber', 50736: 'LensInfo', 50737: 'ChromaBlurRadius', 50738: 'AntiAliasStrength', 50739: 'ShadowScale', 50740: 'DNGPrivateData', 50741: 'MakerNoteSafety', 50778: 'CalibrationIlluminant1', 50779: 'CalibrationIlluminant2', 50780: 'BestQualityScale', 50781: 'RawDataUniqueID', 50827: 'OriginalRawFileName', 50828: 'OriginalRawFileData', 50829: 'ActiveArea', 50830: 'MaskedAreas', 50831: 'AsShotICCProfile', 50832: 'AsShotPreProfileMatrix', 50833: 'CurrentICCProfile', 50834: 'CurrentPreProfileMatrix', 50879: 'ColorimetricReference', 50931: 'CameraCalibrationSignature', 50932: 'ProfileCalibrationSignature', 50934: 'AsShotProfileName', 50935: 'NoiseReductionApplied', 50936: 'ProfileName', 50937: 'ProfileHueSatMapDims', 50938: 'ProfileHueSatMapData1', 50939: 'ProfileHueSatMapData2', 50940: 'ProfileToneCurve', 50941: 'ProfileEmbedPolicy', 50942: 'ProfileCopyright', 50964: 'ForwardMatrix1', 50965: 'ForwardMatrix2', 50966: 'PreviewApplicationName', 50967: 'PreviewApplicationVersion', 50968: 'PreviewSettingsName', 50969: 'PreviewSettingsDigest', 50970: 'PreviewColorSpace', 50971: 'PreviewDateTime', 50972: 'RawImageDigest', 50973: 'OriginalRawFileDigest', 50974: 'SubTileBlockSize', 50975: 'RowInterleaveFactor', 50981: 'ProfileLookTableDims', 50982: 'ProfileLookTableData', 51008: 'OpcodeList1', 51009: 'OpcodeList2', 51022: 'OpcodeList3', 51041: 'NoiseProfile', 37388: 'SpatialFrequencyResponse', 37396: 'SubjectLocation', 37397: 'ExposureIndex', 33422: 'CFAPattern', 37387: 'FlashEnergy'}

You can export this into a user friendly spreadsheet format using the following lines of code:-

df_exif_tags = pd.DataFrame([ExifTags.TAGS]).T
df_exif_tags.to_excel('EXIF.xlsx', index=True)

We can use this img._getexif().items() to access the specific EXIF metadata attributes available in a picture after reading it like so;-

images = glob.glob(r'Field Trip Map\30-08-2024_05-00-34_7579\*.jpg')

img = Image.open(images[0])
print(img._getexif().items())

Friday, August 9, 2024

Geo visualization of 114 oldest secondary schools in Nigeria

The list is given below;-



Let geocode the schools to have there latitude and longitude coordinates. That is what we need for the Geo visualization. There are many ways to do the geocode, including using tools like Google maps API, OpenStreetMap API etc. The updated table should look like the one below;-


Now, you can import the table into any of the GIS software, here I will use QGIS. If you used automated process to obtain the coordinates, there will certainly be outliers in the result. In my case, I found about two outliers results one fell somewhere in republic of Niger while the other was in Central Africa Republic. So, I manually adjusted them accordingly to be in their right locations within Nigeria.


At this point the 'Geo visualization' has been successfully completed. And obviously we could see the concentration of the schools in the South Western part of the country.

The next thing to do is to add more context to the visualization and conduct analysis based on the objective you have in mind. For example, we could use the 'Age' column to create a proportional point symbol map.


We can also add labels from the attribute table, add state boundaries or state capital locations. Statistical plots could also be added as well as other cartographic elements to enrich the visualization.


That is it!

Friday, August 2, 2024

Landsat Path Row for Nigeria

 The Landsat 8 or Landsat 9 satellite acquires or records images across the earth in 'scenes'. Each scene covers a square of about 185km by 185km (i.e. 115miles by 115miles). A scene is defined by Path and Row, the Path number is always given first, followed by the Row number.

This Path Row helps in defining the Landsat download scene in EarthExplorer. This Path Row can be accessed on the USGS web page in both shapefile or kml formats. The Path Row are described by the World Reference System (WRS) which is a global notation used in cataloging Landsat data. Landsat satellites 1, 2 and 3 followed WRS-1, and Landsat satellites 4,5,7, 8 and 9 follow WRS-2.

There are different Path Row numbers for Landsat satellite image acquired during the nighttime and daytime as seen below;-

Ascending (nighttime) Path Row






Descending (daytime) Path Row



Take note of the Path Row numbers for Nigeria (or your country) and anytime you have a project the requires you to make use of Landsat data, you can easily refer to the Path Row number map to get idea of the scene coverage on your study area.


Thank you for following.

Thursday, July 11, 2024

Plotting Proportional Symbol/Points Size Map in QGIS - Case study of African Teams With The Highest AFCON Medals In History

 Let look at the top 10 African countries with the highest AFCON medals and use Proportional Symbol Map to visualize them.

For this mapping task, we need the map of African and the medals table as seen below.



The updated table as the time of writing (i.e. after the 2023 AFCON) is as follow;-




Steps

(1) Get the vector map of Africa and link it to the medals table. The newer versions QGIS comes with the world map as seen above, you can extract the map of Africa from there. Use the join attribute to link the map attribute to the medal table.


(2) Create a point layer using the Centroids algorithm function. This algorithm creates a new point layer, with points representing the centroid of the geometries in an input layer. The attributes associated to each point in the output layer are the same ones associated to the original features.


(3) The centroid point layer should have the linked medals table from step1 above. If not, you can make the join at this point. There are ten (10) on the medals table, so our focus should be on those 10 countries.

(4) There are two ways to make the  "Proportional Point Symbol" map in QGIS. The first is to use "Single Symbol" under 'Symbology'. The second method is to use "Graduated" under 'Symbology'.

The difference is in creating a 'Data-defined Size Legend' as a 'Collapsed Legend'. While it seamlessly worked when you used "Single Symbol", it doesn't work when you used "Graduated". Lets take a look at each method one after the other:-

Using Single Symbol

From the point layer Symbology tab, select "Single Symbol" and set the "Size" using 'Assistant...' 


Inside the  'Assistant...' dialog window, select the attribute field to be used for the 'Proportional Point Symbol' under the Input section and then set other Output section as seen below. The preview will be displayed on the right-hand side. Also this will enable you set 'Data-defined Size Legend' as a 'Collapsed Legend' from the "Advanced" button.




Now we can have a legend image that looks like the one below:-



Using Graduated

With this method, from the point layer Symbology tab, select "Graduated" and set the "Method" to 'Size' as seen below.


This will create the promotional points symbols, though you won't be able to set "Data-defined Size Legend" to 'Collapsed Legend". 

With this method, the legend image will look like the one below:-



That is it!

Saturday, June 29, 2024

Extracting EXIF data from HEIC or HEIF image format

 According to Wikipedia, HEIC/HEIF stands for "High Efficiency Image File Format" and it is a container format for storing individual digital images and image sequences. The standard covers multimedia files that can also include other media streams, such as timed text, audio and video. 

In other words, HEIC is Apple's file extension for the HEIF file format. It is basically a replacement for JPEG (Joint Photographic Experts Group) image format. JPEG is pretty aged and lacks new advances in compression, so there is need for better option. This lead Apple to adopt a standard for HEIC in 2015 to replace JPEG. So in iOS 11, HEIC was introduced and in High Sierra on the Mac.


The HEIC image file format can contains series of images and it also contains good number of textual information (EXIF metadata - Exchangeable Image File Format) embedded in it such the GPS information when the picture was taken.

In this post, I will share how we can extract the GPS information from HEIC image using a python script. The script was adopted from this stackoverflow question "How to extract GPS location from HEIC files" and it is as follow:-

import pandas as pd
from PIL import Image
from pillow_heif import register_heif_opener

def get_exif(filename):
    image = Image.open(filename)
    image.verify()
    return image.getexif().get_ifd(0x8825)


def get_geotagging(exif):
    geo_tagging_info = {}
    if not exif:
        raise ValueError("No EXIF metadata found")
    else:
        gps_keys = ['GPSVersionID', 'GPSLatitudeRef', 'GPSLatitude', 'GPSLongitudeRef', 'GPSLongitude',
                    'GPSAltitudeRef', 'GPSAltitude', 'GPSTimeStamp', 'GPSSatellites', 'GPSStatus', 'GPSMeasureMode',
                    'GPSDOP', 'GPSSpeedRef', 'GPSSpeed', 'GPSTrackRef', 'GPSTrack', 'GPSImgDirectionRef',
                    'GPSImgDirection', 'GPSMapDatum', 'GPSDestLatitudeRef', 'GPSDestLatitude', 'GPSDestLongitudeRef',
                    'GPSDestLongitude', 'GPSDestBearingRef', 'GPSDestBearing', 'GPSDestDistanceRef', 'GPSDestDistance',
                    'GPSProcessingMethod', 'GPSAreaInformation', 'GPSDateStamp', 'GPSDifferential']

        for k, v in exif.items():
            try:
                geo_tagging_info[gps_keys[k]] = str(v)
            except IndexError:
                pass
        return geo_tagging_info


register_heif_opener()

my_image = 'IMG_8362.heic'
image_info = get_exif(my_image)
results = get_geotagging(image_info)

print(results)


To run the functions above on multiple images and save the result into a pandas dataframe, the resulting code will look like below:-

dataList = []
fname = []
for heic_img in folder_loc:
    print('Processing...', heic_img)
    fname.append(heic_img.split('\\')[-1])
    
    image_info = get_exif(heic_img)
    results = get_geotagging(image_info)
    
    dataList.append(results)
    
print('Done...')

df_heic = pd.DataFrame(dataList)

df_heic['File Name'] = fname
df_heic.to_excel('DataList.xlsx', index=False)
.
You should now have table that contain the GPS information as seen above.

If you look closely at the Latitude and Longitude columns, the values are not really in a familiar formats of either decimal degrees or degree munities and seconds, so we have to do some extra data cleaning to get into the right format.

For example, the first latitude is "(24.0, 50.0, 28.13)", but that isn't useful to most GIS software. It should either be in Decimal Degrees like this "24.841147222" or in Degree Munities and Seconds like this "24° 50' 28.13" ". The cleaning code should look like this:- 

heic_lat = '(24.0, 50.0, 28.13)'
new_lat = heic_lat.replace('(', '').replace(')', '').split(', ')

# Convert to DMS
new_lat_DMS = new_lat[0].replace('.0', '') +'° '+ new_lat[1].replace('.0', '') +"' "+ new_lat[2] +'" '
print(new_lat_DMS)

# Convert to DD
new_lat_DD = int(float(new_lat[0])) + int(float(new_lat[1]))/60 + float(new_lat[2])/3600
print(new_lat_DD)

That is it!

Monday, June 24, 2024

Smoothing Contour Line/Polyline in QGIS and AutoCAD

 Often we work with datasets that needs to be represented by continuous lines/polylines such as contour lines. If there is no smoothing between a the line nodes (vertices), the visual appearance looks questionable. Let see how we can smooth lines/polylines in both QGIS and AutoCAD.


QGIS

In QGIS, you need to set the 'Symbol Layer Type' >> 'Geometry Generator' to: smooth($geometry, 5).

This will smooth the line/polyline  nodes (vertices).





See before and after applying the 'smooth($geometry, 5)' function below:-


See after applying the 'smooth($geometry, 5)' function below:-




AutoCAD

There are a couple of factors that could cause a lines/polylines to have angular or pointed nodes (vertices). One could be due to the resolution of the drawing, if that is the case then we can adjust the smoothing option to the highest (20000) from the OPTION dialog window.


Another way to smooth the lines is by using the PEDIT command and select FIT.


That is it!

Friday, May 10, 2024

How install QGIS on Anaconda Python Distribution

  There are some QGIS plugins that require special python setup dependencies before they can be installed. One of such plugin is the PCRaster tools.

In this post we will create a new virtual python environment using conda (conda allows you to create separate environments, each containing their own files, packages, and package dependencies. The contents of each environment do not interact with each other. conda is an open source tool that comes with Anaconda, and it functions as both a package manager and an environment manager).

Then we will install QGIS on the new environment, after which we shall install the PCRaster plugin from the plugin manager.

If you don't know what Anaconda and PCRaster are, here is a short note on them.

  • Anaconda is a distribution of the Python and R programming languages for scientific computing, that aims to simplify package management and deployment.
  • PCRaster is a collection of software targeted at the development and deployment of spatio-temporal environmental models.
Here are the steps to follow:-

Step 1: Install anaconda and run the anaconda prompt.

Step 2: Enter the following line.

conda create --name pcrasterENV -c conda-forge qgis pcraster

This will install qgis and pcraster in the created environment named pcrasterENV


Step 3: To launch qgis, activate the environment by entering this;-

conda activate pcrasterENV


Step 4: Now type qgis this will launch a new instance of QGIS with all the required packages installed.


Note: This process usually takes some time, so don't panic when you see packages that looks like below been installed.

(base) C:\Users\`HYJ7>conda create --name pcrasterENV -c conda-forge qgis pcraster
Collecting package metadata (current_repodata.json): done
Solving environment: failed with repodata from current_repodata.json, will retry with next repodata source.
Collecting package metadata (repodata.json): done
Solving environment: done


==> WARNING: A newer version of conda exists. <==
  current version: 22.9.0
  latest version: 24.4.0

Please update conda by running

    $ conda update -n base -c defaults conda



## Package Plan ##

  environment location: C:\Users\`HYJ7\.conda\envs\pcrasterENV

  added / updated specs:
    - pcraster
    - qgis


The following packages will be downloaded:

    package                    |            build
    ---------------------------|-----------------
    aws-c-auth-0.7.18          |       h4813612_3          98 KB  conda-forge
    aws-c-cal-0.6.12           |       hc83774a_0          45 KB  conda-forge
    aws-c-common-0.9.17        |       h2466b09_0         219 KB  conda-forge
    aws-c-compression-0.2.18   |       hc83774a_4          22 KB  conda-forge
    aws-c-event-stream-0.4.2   |       h99f05a9_9          53 KB  conda-forge
    aws-c-http-0.8.1           |      h23b3c28_12         177 KB  conda-forge
    aws-c-io-0.14.7            |       hebaacdb_9         156 KB  conda-forge
    aws-c-mqtt-0.10.4          |       h503f92b_1         155 KB  conda-forge
    aws-c-s3-0.5.7             |       h7ba16a0_4         102 KB  conda-forge
    aws-c-sdkutils-0.1.16      |       hc83774a_0          52 KB  conda-forge
    aws-checksums-0.1.18       |       hc83774a_4          51 KB  conda-forge
    aws-crt-cpp-0.26.8         |       hf33e8a9_6         243 KB  conda-forge
    aws-sdk-cpp-1.11.267       |       h12f3f85_8         3.3 MB  conda-forge
    azure-core-cpp-1.11.1      |       h249a519_1         474 KB  conda-forge
    azure-identity-cpp-1.6.0   |       h91493d7_1         353 KB  conda-forge
    azure-storage-blobs-cpp-12.10.0|       h91493d7_1         939 KB  conda-forge
    azure-storage-common-cpp-12.5.0|       h91493d7_4         219 KB  conda-forge
    blas-2.122                 |              mkl          17 KB  conda-forge
    blas-devel-3.9.0           |     22_win64_mkl          16 KB  conda-forge
    blosc-1.21.5               |       hbd69f2e_1          49 KB  conda-forge
    brotli-python-1.1.0        |  py312h53d5487_1         315 KB  conda-forge
    bzip2-1.0.8                |       hcfcfb64_5         122 KB  conda-forge
    c-ares-1.28.1              |       hcfcfb64_0         155 KB  conda-forge
    ca-certificates-2024.2.2   |       h56e8100_0         152 KB  conda-forge
    cairo-1.18.0               |       h1fef639_0         1.4 MB  conda-forge
    ceres-solver-2.2.0         |       h0d88682_3         879 KB  conda-forge
    certifi-2024.2.2           |     pyhd8ed1ab_0         157 KB  conda-forge
    cfitsio-4.4.0              |       h9b0cee5_1         591 KB  conda-forge
    charset-normalizer-3.3.2   |     pyhd8ed1ab_0          46 KB  conda-forge
    coverage-7.5.1             |  py312h4389bb4_0         367 KB  conda-forge
    curl-8.7.1                 |       hd5e4a3a_0         150 KB  conda-forge
    dataclasses-0.8            |     pyhc8e2a94_3          10 KB  conda-forge
    draco-1.5.7                |       h181d51b_0         2.3 MB  conda-forge
    eigen-3.4.0                |       h91493d7_0         1.0 MB  conda-forge
    exiv2-0.28.2               |       hadc2d18_0         892 KB  conda-forge
    expat-2.6.2                |       h63175ca_0         224 KB  conda-forge
    fmt-10.2.1                 |       h181d51b_0         181 KB  conda-forge
    font-ttf-ubuntu-0.83       |       h77eed37_2         1.5 MB  conda-forge
    fontconfig-2.14.2          |       hbde0cde_0         186 KB  conda-forge
    freetype-2.12.1            |       hdaf720e_2         498 KB  conda-forge
    freexl-2.0.0               |       h8276f4a_0          76 KB  conda-forge
    future-1.0.0               |     pyhd8ed1ab_0         356 KB  conda-forge
    gdal-3.8.5                 |  py312hea5013e_2         1.5 MB  conda-forge
    geos-3.12.1                |       h1537add_0         1.5 MB  conda-forge
    geotiff-1.7.1              |      hed9d743_16         123 KB  conda-forge
    gflags-2.2.2               |    ha925a31_1004          80 KB  conda-forge
    glib-2.80.1                |       h0df6a38_0         559 KB  conda-forge
    glib-tools-2.80.1          |       h2f9d560_0          93 KB  conda-forge
    glog-0.7.0                 |       h9cd36e5_0         111 KB  conda-forge
    gsl-2.7                    |       hdfb1a43_0         1.7 MB  conda-forge
    gst-plugins-base-1.24.3    |       hba88be7_0         2.0 MB  conda-forge
    gstreamer-1.24.3           |       h5006eae_0         1.9 MB  conda-forge
    hdf4-4.2.15                |       h5557f11_7         761 KB  conda-forge
    hdf5-1.14.3                |nompi_h73e8ff5_101         1.9 MB  conda-forge
    httplib2-0.22.0            |     pyhd8ed1ab_0          93 KB  conda-forge
    icu-73.2                   |       h63175ca_0        12.8 MB  conda-forge
    idna-3.7                   |     pyhd8ed1ab_0          51 KB  conda-forge
    intel-openmp-2024.1.0      |     h57928b3_965         1.5 MB  conda-forge
    jinja2-3.1.4               |     pyhd8ed1ab_0         109 KB  conda-forge
    kealib-1.5.3               |       hd248416_0         130 KB  conda-forge
    khronos-opencl-icd-loader-2023.04.17|       h64bf75a_0          84 KB  conda-forge
    krb5-1.21.2                |       heb0366b_0         694 KB  conda-forge
    laz-perf-3.4.0             |       h91493d7_0         102 KB  conda-forge
    lcms2-2.16                 |       h67d730c_0         496 KB  conda-forge
    lerc-4.0.0                 |       h63175ca_0         190 KB  conda-forge
    libabseil-20240116.2       | cxx17_h63175ca_0         1.7 MB  conda-forge
    libaec-1.1.3               |       h63175ca_0          32 KB  conda-forge
    libarchive-3.7.2           |       h313118b_1         942 KB  conda-forge
    libblas-3.9.0              |     22_win64_mkl         4.9 MB  conda-forge
    libboost-1.84.0            |       hcc118f5_2         2.3 MB  conda-forge
    libboost-headers-1.84.0    |       h57928b3_2        13.2 MB  conda-forge
    libbrotlicommon-1.1.0      |       hcfcfb64_1          69 KB  conda-forge
    libbrotlidec-1.1.0         |       hcfcfb64_1          32 KB  conda-forge
    libbrotlienc-1.1.0         |       hcfcfb64_1         241 KB  conda-forge
    libcblas-3.9.0             |     22_win64_mkl         5.0 MB  conda-forge
    libclang13-18.1.5          |default_hf64faad_0        24.2 MB  conda-forge
    libcrc32c-1.1.2            |       h0e60522_0          25 KB  conda-forge
    libcurl-8.7.1              |       hd5e4a3a_0         323 KB  conda-forge
    libdeflate-1.20            |       hcfcfb64_0         152 KB  conda-forge
    libexpat-2.6.2             |       h63175ca_0         136 KB  conda-forge
    libgdal-3.8.5              |       hfb9f81c_2         8.2 MB  conda-forge
    libglib-2.80.1             |       h0df6a38_0         3.6 MB  conda-forge
    libgoogle-cloud-2.23.0     |       h68df31e_1          14 KB  conda-forge
    libgoogle-cloud-storage-2.23.0|       hb581fae_1          14 KB  conda-forge
    libgrpc-1.62.2             |       h5273850_0        15.4 MB  conda-forge
    libhwloc-2.10.0            |default_h2fffb23_1000         2.3 MB  conda-forge
    libiconv-1.17              |       hcfcfb64_2         621 KB  conda-forge
    libintl-0.22.5             |       h5728263_2          94 KB  conda-forge
    libintl-devel-0.22.5       |       h5728263_2          40 KB  conda-forge
    libjpeg-turbo-3.0.0        |       hcfcfb64_1         804 KB  conda-forge
    libkml-1.3.0               |    haf3e7a6_1018         1.7 MB  conda-forge
    liblapack-3.9.0            |     22_win64_mkl         4.9 MB  conda-forge
    liblapacke-3.9.0           |     22_win64_mkl         4.9 MB  conda-forge
    libnetcdf-4.9.2            |nompi_h07c049d_113         610 KB  conda-forge
    libogg-1.3.4               |       h8ffe710_1          34 KB  conda-forge
    libpng-1.6.43              |       h19919ed_0         339 KB  conda-forge
    libpq-16.2                 |       hdb24f17_1         3.5 MB  conda-forge
    libprotobuf-4.25.3         |       h503648d_0         5.4 MB  conda-forge
    libre2-11-2023.09.01       |       hf8d8778_2         251 KB  conda-forge
    librttopo-1.1.0            |      h94c4f80_15         393 KB  conda-forge
    libspatialindex-1.9.3      |       h39d44d4_4         437 KB  conda-forge
    libspatialite-5.1.0        |       hf13de1f_5         8.0 MB  conda-forge
    libsqlite-3.45.3           |       hcfcfb64_0         850 KB  conda-forge
    libssh2-1.11.0             |       h7dfc565_0         261 KB  conda-forge
    libtiff-4.6.0              |       hddb2be6_3         769 KB  conda-forge
    libvorbis-1.3.7            |       h0e60522_0         267 KB  conda-forge
    libwebp-1.4.0              |       h2466b09_0          69 KB  conda-forge
    libwebp-base-1.4.0         |       hcfcfb64_0         268 KB  conda-forge
    libxml2-2.12.6             |       hc3477c8_2         1.5 MB  conda-forge
    libxslt-1.1.39             |       h3df6e99_0         409 KB  conda-forge
    libzip-1.10.1              |       h1d365fa_3         143 KB  conda-forge
    libzlib-1.2.13             |       hcfcfb64_5          54 KB  conda-forge
    lxml-5.2.1                 |  py312h56c7e3b_0         1.0 MB  conda-forge
    lz4-c-1.9.4                |       hcfcfb64_0         131 KB  conda-forge
    lzo-2.10                   |    hcfcfb64_1001         139 KB  conda-forge
    m2w64-gcc-libgfortran-5.3.0|                6         342 KB  conda-forge
    m2w64-gcc-libs-5.3.0       |                7         520 KB  conda-forge
    m2w64-gcc-libs-core-5.3.0  |                7         214 KB  conda-forge
    m2w64-gmp-6.1.0            |                2         726 KB  conda-forge
    m2w64-libwinpthread-git-5.0.0.4634.697f757|                2          31 KB  conda-forge
    markupsafe-2.1.5           |  py312he70551f_0          28 KB  conda-forge
    minizip-4.0.5              |       h5bed578_0          83 KB  conda-forge
    mkl-2024.1.0               |     h66d3029_692       104.4 MB  conda-forge
    mkl-devel-2024.1.0         |     h57928b3_692         5.0 MB  conda-forge
    mkl-include-2024.1.0       |     h66d3029_692         768 KB  conda-forge
    mock-5.1.0                 |     pyhd8ed1ab_0          33 KB  conda-forge
    msys2-conda-epoch-20160418 |                1           3 KB  conda-forge
    nitro-2.7.dev8             |       h1537add_0         524 KB  conda-forge
    nose2-0.9.2                |             py_0          91 KB  conda-forge
    numpy-1.26.4               |  py312h8753938_0         6.2 MB  conda-forge
    openjpeg-2.5.2             |       h3d672ee_0         232 KB  conda-forge
    openssl-3.3.0              |       hcfcfb64_0         8.0 MB  conda-forge
    owslib-0.30.0              |     pyhd8ed1ab_0         136 KB  conda-forge
    packaging-24.0             |     pyhd8ed1ab_0          49 KB  conda-forge
    pcraster-4.4.1             |  py312hc016867_4         5.0 MB  conda-forge
    pcre2-10.43                |       h17e33f8_0         799 KB  conda-forge
    pdal-2.7.1                 |       h78909d1_6         2.8 MB  conda-forge
    pip-24.0                   |     pyhd8ed1ab_0         1.3 MB  conda-forge
    pixman-0.43.4              |       h63175ca_0         451 KB  conda-forge
    plotly-5.22.0              |     pyhd8ed1ab_0         5.1 MB  conda-forge
    ply-3.11                   |     pyhd8ed1ab_2          48 KB  conda-forge
    poppler-24.04.0            |       h747fd5a_0         2.2 MB  conda-forge
    postgresql-16.2            |       h94c9ec1_1        17.8 MB  conda-forge
    proj-9.4.0                 |       he13c7e8_1         2.6 MB  conda-forge
    psycopg2-2.9.9             |  py312hf50bb3c_0         167 KB  conda-forge
    pthreads-win32-2.9.1       |       hfa6e2cd_3         141 KB  conda-forge
    pygments-2.18.0            |     pyhd8ed1ab_0         859 KB  conda-forge
    pyparsing-3.1.2            |     pyhd8ed1ab_0          87 KB  conda-forge
    pyproj-3.6.1               |  py312h616b599_6         708 KB  conda-forge
    pyqt-5.15.9                |  py312he09f080_5         3.7 MB  conda-forge
    pyqt5-sip-12.12.2          |  py312h53d5487_5          78 KB  conda-forge
    pyqtwebkit-5.15.9          |  py312hca0710b_2         121 KB  conda-forge
    pysocks-1.7.1              |     pyh0701188_6          19 KB  conda-forge
    python-3.12.3              |h2628c8c_0_cpython        15.4 MB  conda-forge
    python-dateutil-2.9.0      |     pyhd8ed1ab_0         218 KB  conda-forge
    python_abi-3.12            |          4_cp312           7 KB  conda-forge
    pytz-2024.1                |     pyhd8ed1ab_0         184 KB  conda-forge
    pyyaml-6.0.1               |  py312he70551f_1         164 KB  conda-forge
    qca-2.3.8                  |       h2624d1c_0         723 KB  conda-forge
    qgis-3.36.2                |  py312hdab107f_0        69.4 MB  conda-forge
    qjson-0.9.0                |    h04a78d6_1009          54 KB  conda-forge
    qscintilla2-2.14.1         |  py312hca0710b_0         1.2 MB  conda-forge
    qt-main-5.15.8             |      hcef0176_21        57.0 MB  conda-forge
    qtkeychain-0.14.3          |       hf9d22a5_0          33 KB  conda-forge
    qtwebkit-5.212             |      h4d8ddc9_16        10.5 MB  conda-forge
    qwt-6.2.0                  |       h07be427_6         3.4 MB  conda-forge
    re2-2023.09.01             |       hd3b24a8_2         202 KB  conda-forge
    requests-2.31.0            |     pyhd8ed1ab_0          55 KB  conda-forge
    setuptools-69.5.1          |     pyhd8ed1ab_0         490 KB  conda-forge
    sip-6.7.12                 |  py312h53d5487_0         576 KB  conda-forge
    six-1.16.0                 |     pyh6c4a22f_0          14 KB  conda-forge
    snappy-1.2.0               |       hfb803bf_1          58 KB  conda-forge
    spdlog-1.13.0              |       h64d2f7d_0         157 KB  conda-forge
    sqlite-3.45.3              |       hcfcfb64_0         852 KB  conda-forge
    tbb-2021.12.0              |       h91493d7_0         158 KB  conda-forge
    tenacity-8.3.0             |     pyhd8ed1ab_0          23 KB  conda-forge
    tiledb-2.22.0              |       h5657395_3         3.0 MB  conda-forge
    tk-8.6.13                  |       h5226925_1         3.3 MB  conda-forge
    toml-0.10.2                |     pyhd8ed1ab_0          18 KB  conda-forge
    tomli-2.0.1                |     pyhd8ed1ab_0          16 KB  conda-forge
    tzdata-2024a               |       h0c530f3_0         117 KB  conda-forge
    ucrt-10.0.22621.0          |       h57928b3_0         1.2 MB  conda-forge
    uriparser-0.9.8            |       h5a68840_0          48 KB  conda-forge
    urllib3-2.2.1              |     pyhd8ed1ab_0          92 KB  conda-forge
    vc-14.3                    |      hcf57466_18          17 KB  conda-forge
    vc14_runtime-14.38.33130   |      h82b7239_18         732 KB  conda-forge
    vs2015_runtime-14.38.33130 |      hcb4865c_18          17 KB  conda-forge
    wheel-0.43.0               |     pyhd8ed1ab_1          57 KB  conda-forge
    win_inet_pton-1.1.0        |     pyhd8ed1ab_6           8 KB  conda-forge
    xerces-c-3.2.5             |       h63175ca_0         3.4 MB  conda-forge
    xz-5.2.6                   |       h8d14728_0         213 KB  conda-forge
    yaml-0.2.5                 |       h8ffe710_2          62 KB  conda-forge
    zlib-1.2.13                |       hcfcfb64_5         105 KB  conda-forge
    zstd-1.5.6                 |       h0ea2cb4_0         341 KB  conda-forge
    ------------------------------------------------------------
                                           Total:       511.8 MB

The following NEW packages will be INSTALLED:

  aws-c-auth         conda-forge/win-64::aws-c-auth-0.7.18-h4813612_3 None
  aws-c-cal          conda-forge/win-64::aws-c-cal-0.6.12-hc83774a_0 None
  aws-c-common       conda-forge/win-64::aws-c-common-0.9.17-h2466b09_0 None
  aws-c-compression  conda-forge/win-64::aws-c-compression-0.2.18-hc83774a_4 None
  aws-c-event-stream conda-forge/win-64::aws-c-event-stream-0.4.2-h99f05a9_9 None
  aws-c-http         conda-forge/win-64::aws-c-http-0.8.1-h23b3c28_12 None
  aws-c-io           conda-forge/win-64::aws-c-io-0.14.7-hebaacdb_9 None
  aws-c-mqtt         conda-forge/win-64::aws-c-mqtt-0.10.4-h503f92b_1 None
  aws-c-s3           conda-forge/win-64::aws-c-s3-0.5.7-h7ba16a0_4 None
  aws-c-sdkutils     conda-forge/win-64::aws-c-sdkutils-0.1.16-hc83774a_0 None
  aws-checksums      conda-forge/win-64::aws-checksums-0.1.18-hc83774a_4 None
  aws-crt-cpp        conda-forge/win-64::aws-crt-cpp-0.26.8-hf33e8a9_6 None
  aws-sdk-cpp        conda-forge/win-64::aws-sdk-cpp-1.11.267-h12f3f85_8 None
  azure-core-cpp     conda-forge/win-64::azure-core-cpp-1.11.1-h249a519_1 None
  azure-identity-cpp conda-forge/win-64::azure-identity-cpp-1.6.0-h91493d7_1 None
  azure-storage-blo~ conda-forge/win-64::azure-storage-blobs-cpp-12.10.0-h91493d7_1 None
  azure-storage-com~ conda-forge/win-64::azure-storage-common-cpp-12.5.0-h91493d7_4 None
  blas               conda-forge/win-64::blas-2.122-mkl None
  blas-devel         conda-forge/win-64::blas-devel-3.9.0-22_win64_mkl None
  blosc              conda-forge/win-64::blosc-1.21.5-hbd69f2e_1 None
  brotli-python      conda-forge/win-64::brotli-python-1.1.0-py312h53d5487_1 None
  bzip2              conda-forge/win-64::bzip2-1.0.8-hcfcfb64_5 None
  c-ares             conda-forge/win-64::c-ares-1.28.1-hcfcfb64_0 None
  ca-certificates    conda-forge/win-64::ca-certificates-2024.2.2-h56e8100_0 None
  cairo              conda-forge/win-64::cairo-1.18.0-h1fef639_0 None
  ceres-solver       conda-forge/win-64::ceres-solver-2.2.0-h0d88682_3 None
  certifi            conda-forge/noarch::certifi-2024.2.2-pyhd8ed1ab_0 None
  cfitsio            conda-forge/win-64::cfitsio-4.4.0-h9b0cee5_1 None
  charset-normalizer conda-forge/noarch::charset-normalizer-3.3.2-pyhd8ed1ab_0 None
  coverage           conda-forge/win-64::coverage-7.5.1-py312h4389bb4_0 None
  curl               conda-forge/win-64::curl-8.7.1-hd5e4a3a_0 None
  dataclasses        conda-forge/noarch::dataclasses-0.8-pyhc8e2a94_3 None
  draco              conda-forge/win-64::draco-1.5.7-h181d51b_0 None
  eigen              conda-forge/win-64::eigen-3.4.0-h91493d7_0 None
  exiv2              conda-forge/win-64::exiv2-0.28.2-hadc2d18_0 None
  expat              conda-forge/win-64::expat-2.6.2-h63175ca_0 None
  fmt                conda-forge/win-64::fmt-10.2.1-h181d51b_0 None
  font-ttf-dejavu-s~ conda-forge/noarch::font-ttf-dejavu-sans-mono-2.37-hab24e00_0 None
  font-ttf-inconsol~ conda-forge/noarch::font-ttf-inconsolata-3.000-h77eed37_0 None
  font-ttf-source-c~ conda-forge/noarch::font-ttf-source-code-pro-2.038-h77eed37_0 None
  font-ttf-ubuntu    conda-forge/noarch::font-ttf-ubuntu-0.83-h77eed37_2 None
  fontconfig         conda-forge/win-64::fontconfig-2.14.2-hbde0cde_0 None
  fonts-conda-ecosy~ conda-forge/noarch::fonts-conda-ecosystem-1-0 None
  fonts-conda-forge  conda-forge/noarch::fonts-conda-forge-1-0 None
  freetype           conda-forge/win-64::freetype-2.12.1-hdaf720e_2 None
  freexl             conda-forge/win-64::freexl-2.0.0-h8276f4a_0 None
  future             conda-forge/noarch::future-1.0.0-pyhd8ed1ab_0 None
  gdal               conda-forge/win-64::gdal-3.8.5-py312hea5013e_2 None
  geos               conda-forge/win-64::geos-3.12.1-h1537add_0 None
  geotiff            conda-forge/win-64::geotiff-1.7.1-hed9d743_16 None
  gflags             conda-forge/win-64::gflags-2.2.2-ha925a31_1004 None
  glib               conda-forge/win-64::glib-2.80.1-h0df6a38_0 None
  glib-tools         conda-forge/win-64::glib-tools-2.80.1-h2f9d560_0 None
  glog               conda-forge/win-64::glog-0.7.0-h9cd36e5_0 None
  gsl                conda-forge/win-64::gsl-2.7-hdfb1a43_0 None
  gst-plugins-base   conda-forge/win-64::gst-plugins-base-1.24.3-hba88be7_0 None
  gstreamer          conda-forge/win-64::gstreamer-1.24.3-h5006eae_0 None
  hdf4               conda-forge/win-64::hdf4-4.2.15-h5557f11_7 None
  hdf5               conda-forge/win-64::hdf5-1.14.3-nompi_h73e8ff5_101 None
  httplib2           conda-forge/noarch::httplib2-0.22.0-pyhd8ed1ab_0 None
  icu                conda-forge/win-64::icu-73.2-h63175ca_0 None
  idna               conda-forge/noarch::idna-3.7-pyhd8ed1ab_0 None
  intel-openmp       conda-forge/win-64::intel-openmp-2024.1.0-h57928b3_965 None
  jinja2             conda-forge/noarch::jinja2-3.1.4-pyhd8ed1ab_0 None
  kealib             conda-forge/win-64::kealib-1.5.3-hd248416_0 None
  khronos-opencl-ic~ conda-forge/win-64::khronos-opencl-icd-loader-2023.04.17-h64bf75a_0 None
  krb5               conda-forge/win-64::krb5-1.21.2-heb0366b_0 None
  laz-perf           conda-forge/win-64::laz-perf-3.4.0-h91493d7_0 None
  lcms2              conda-forge/win-64::lcms2-2.16-h67d730c_0 None
  lerc               conda-forge/win-64::lerc-4.0.0-h63175ca_0 None
  libabseil          conda-forge/win-64::libabseil-20240116.2-cxx17_h63175ca_0 None
  libaec             conda-forge/win-64::libaec-1.1.3-h63175ca_0 None
  libarchive         conda-forge/win-64::libarchive-3.7.2-h313118b_1 None
  libblas            conda-forge/win-64::libblas-3.9.0-22_win64_mkl None
  libboost           conda-forge/win-64::libboost-1.84.0-hcc118f5_2 None
  libboost-headers   conda-forge/win-64::libboost-headers-1.84.0-h57928b3_2 None
  libbrotlicommon    conda-forge/win-64::libbrotlicommon-1.1.0-hcfcfb64_1 None
  libbrotlidec       conda-forge/win-64::libbrotlidec-1.1.0-hcfcfb64_1 None
  libbrotlienc       conda-forge/win-64::libbrotlienc-1.1.0-hcfcfb64_1 None
  libcblas           conda-forge/win-64::libcblas-3.9.0-22_win64_mkl None
  libclang13         conda-forge/win-64::libclang13-18.1.5-default_hf64faad_0 None
  libcrc32c          conda-forge/win-64::libcrc32c-1.1.2-h0e60522_0 None
  libcurl            conda-forge/win-64::libcurl-8.7.1-hd5e4a3a_0 None
  libdeflate         conda-forge/win-64::libdeflate-1.20-hcfcfb64_0 None
  libexpat           conda-forge/win-64::libexpat-2.6.2-h63175ca_0 None
  libffi             conda-forge/win-64::libffi-3.4.2-h8ffe710_5 None
  libgdal            conda-forge/win-64::libgdal-3.8.5-hfb9f81c_2 None
  libglib            conda-forge/win-64::libglib-2.80.1-h0df6a38_0 None
  libgoogle-cloud    conda-forge/win-64::libgoogle-cloud-2.23.0-h68df31e_1 None
  libgoogle-cloud-s~ conda-forge/win-64::libgoogle-cloud-storage-2.23.0-hb581fae_1 None
  libgrpc            conda-forge/win-64::libgrpc-1.62.2-h5273850_0 None
  libhwloc           conda-forge/win-64::libhwloc-2.10.0-default_h2fffb23_1000 None
  libiconv           conda-forge/win-64::libiconv-1.17-hcfcfb64_2 None
  libintl            conda-forge/win-64::libintl-0.22.5-h5728263_2 None
  libintl-devel      conda-forge/win-64::libintl-devel-0.22.5-h5728263_2 None
  libjpeg-turbo      conda-forge/win-64::libjpeg-turbo-3.0.0-hcfcfb64_1 None
  libkml             conda-forge/win-64::libkml-1.3.0-haf3e7a6_1018 None
  liblapack          conda-forge/win-64::liblapack-3.9.0-22_win64_mkl None
  liblapacke         conda-forge/win-64::liblapacke-3.9.0-22_win64_mkl None
  libnetcdf          conda-forge/win-64::libnetcdf-4.9.2-nompi_h07c049d_113 None
  libogg             conda-forge/win-64::libogg-1.3.4-h8ffe710_1 None
  libpng             conda-forge/win-64::libpng-1.6.43-h19919ed_0 None
  libpq              conda-forge/win-64::libpq-16.2-hdb24f17_1 None
  libprotobuf        conda-forge/win-64::libprotobuf-4.25.3-h503648d_0 None
  libre2-11          conda-forge/win-64::libre2-11-2023.09.01-hf8d8778_2 None
  librttopo          conda-forge/win-64::librttopo-1.1.0-h94c4f80_15 None
  libspatialindex    conda-forge/win-64::libspatialindex-1.9.3-h39d44d4_4 None
  libspatialite      conda-forge/win-64::libspatialite-5.1.0-hf13de1f_5 None
  libsqlite          conda-forge/win-64::libsqlite-3.45.3-hcfcfb64_0 None
  libssh2            conda-forge/win-64::libssh2-1.11.0-h7dfc565_0 None
  libtiff            conda-forge/win-64::libtiff-4.6.0-hddb2be6_3 None
  libvorbis          conda-forge/win-64::libvorbis-1.3.7-h0e60522_0 None
  libwebp            conda-forge/win-64::libwebp-1.4.0-h2466b09_0 None
  libwebp-base       conda-forge/win-64::libwebp-base-1.4.0-hcfcfb64_0 None
  libxml2            conda-forge/win-64::libxml2-2.12.6-hc3477c8_2 None
  libxslt            conda-forge/win-64::libxslt-1.1.39-h3df6e99_0 None
  libzip             conda-forge/win-64::libzip-1.10.1-h1d365fa_3 None
  libzlib            conda-forge/win-64::libzlib-1.2.13-hcfcfb64_5 None
  lxml               conda-forge/win-64::lxml-5.2.1-py312h56c7e3b_0 None
  lz4-c              conda-forge/win-64::lz4-c-1.9.4-hcfcfb64_0 None
  lzo                conda-forge/win-64::lzo-2.10-hcfcfb64_1001 None
  m2w64-gcc-libgfor~ conda-forge/win-64::m2w64-gcc-libgfortran-5.3.0-6 None
  m2w64-gcc-libs     conda-forge/win-64::m2w64-gcc-libs-5.3.0-7 None
  m2w64-gcc-libs-co~ conda-forge/win-64::m2w64-gcc-libs-core-5.3.0-7 None
  m2w64-gmp          conda-forge/win-64::m2w64-gmp-6.1.0-2 None
  m2w64-libwinpthre~ conda-forge/win-64::m2w64-libwinpthread-git-5.0.0.4634.697f757-2 None
  markupsafe         conda-forge/win-64::markupsafe-2.1.5-py312he70551f_0 None
  minizip            conda-forge/win-64::minizip-4.0.5-h5bed578_0 None
  mkl                conda-forge/win-64::mkl-2024.1.0-h66d3029_692 None
  mkl-devel          conda-forge/win-64::mkl-devel-2024.1.0-h57928b3_692 None
  mkl-include        conda-forge/win-64::mkl-include-2024.1.0-h66d3029_692 None
  mock               conda-forge/noarch::mock-5.1.0-pyhd8ed1ab_0 None
  msys2-conda-epoch  conda-forge/win-64::msys2-conda-epoch-20160418-1 None
  nitro              conda-forge/win-64::nitro-2.7.dev8-h1537add_0 None
  nose2              conda-forge/noarch::nose2-0.9.2-py_0 None
  numpy              conda-forge/win-64::numpy-1.26.4-py312h8753938_0 None
  openjpeg           conda-forge/win-64::openjpeg-2.5.2-h3d672ee_0 None
  openssl            conda-forge/win-64::openssl-3.3.0-hcfcfb64_0 None
  owslib             conda-forge/noarch::owslib-0.30.0-pyhd8ed1ab_0 None
  packaging          conda-forge/noarch::packaging-24.0-pyhd8ed1ab_0 None
  pcraster           conda-forge/win-64::pcraster-4.4.1-py312hc016867_4 None
  pcre2              conda-forge/win-64::pcre2-10.43-h17e33f8_0 None
  pdal               conda-forge/win-64::pdal-2.7.1-h78909d1_6 None
  pip                conda-forge/noarch::pip-24.0-pyhd8ed1ab_0 None
  pixman             conda-forge/win-64::pixman-0.43.4-h63175ca_0 None
  plotly             conda-forge/noarch::plotly-5.22.0-pyhd8ed1ab_0 None
  ply                conda-forge/noarch::ply-3.11-pyhd8ed1ab_2 None
  poppler            conda-forge/win-64::poppler-24.04.0-h747fd5a_0 None
  poppler-data       conda-forge/noarch::poppler-data-0.4.12-hd8ed1ab_0 None
  postgresql         conda-forge/win-64::postgresql-16.2-h94c9ec1_1 None
  proj               conda-forge/win-64::proj-9.4.0-he13c7e8_1 None
  psycopg2           conda-forge/win-64::psycopg2-2.9.9-py312hf50bb3c_0 None
  pthreads-win32     conda-forge/win-64::pthreads-win32-2.9.1-hfa6e2cd_3 None
  pygments           conda-forge/noarch::pygments-2.18.0-pyhd8ed1ab_0 None
  pyparsing          conda-forge/noarch::pyparsing-3.1.2-pyhd8ed1ab_0 None
  pyproj             conda-forge/win-64::pyproj-3.6.1-py312h616b599_6 None
  pyqt               conda-forge/win-64::pyqt-5.15.9-py312he09f080_5 None
  pyqt5-sip          conda-forge/win-64::pyqt5-sip-12.12.2-py312h53d5487_5 None
  pyqtwebkit         conda-forge/win-64::pyqtwebkit-5.15.9-py312hca0710b_2 None
  pysocks            conda-forge/noarch::pysocks-1.7.1-pyh0701188_6 None
  python             conda-forge/win-64::python-3.12.3-h2628c8c_0_cpython None
  python-dateutil    conda-forge/noarch::python-dateutil-2.9.0-pyhd8ed1ab_0 None
  python_abi         conda-forge/win-64::python_abi-3.12-4_cp312 None
  pytz               conda-forge/noarch::pytz-2024.1-pyhd8ed1ab_0 None
  pyyaml             conda-forge/win-64::pyyaml-6.0.1-py312he70551f_1 None
  qca                conda-forge/win-64::qca-2.3.8-h2624d1c_0 None
  qgis               conda-forge/win-64::qgis-3.36.2-py312hdab107f_0 None
  qjson              conda-forge/win-64::qjson-0.9.0-h04a78d6_1009 None
  qscintilla2        conda-forge/win-64::qscintilla2-2.14.1-py312hca0710b_0 None
  qt-main            conda-forge/win-64::qt-main-5.15.8-hcef0176_21 None
  qtkeychain         conda-forge/win-64::qtkeychain-0.14.3-hf9d22a5_0 None
  qtwebkit           conda-forge/win-64::qtwebkit-5.212-h4d8ddc9_16 None
  qwt                conda-forge/win-64::qwt-6.2.0-h07be427_6 None
  re2                conda-forge/win-64::re2-2023.09.01-hd3b24a8_2 None
  requests           conda-forge/noarch::requests-2.31.0-pyhd8ed1ab_0 None
  setuptools         conda-forge/noarch::setuptools-69.5.1-pyhd8ed1ab_0 None
  sip                conda-forge/win-64::sip-6.7.12-py312h53d5487_0 None
  six                conda-forge/noarch::six-1.16.0-pyh6c4a22f_0 None
  snappy             conda-forge/win-64::snappy-1.2.0-hfb803bf_1 None
  spdlog             conda-forge/win-64::spdlog-1.13.0-h64d2f7d_0 None
  sqlite             conda-forge/win-64::sqlite-3.45.3-hcfcfb64_0 None
  tbb                conda-forge/win-64::tbb-2021.12.0-h91493d7_0 None
  tenacity           conda-forge/noarch::tenacity-8.3.0-pyhd8ed1ab_0 None
  tiledb             conda-forge/win-64::tiledb-2.22.0-h5657395_3 None
  tk                 conda-forge/win-64::tk-8.6.13-h5226925_1 None
  toml               conda-forge/noarch::toml-0.10.2-pyhd8ed1ab_0 None
  tomli              conda-forge/noarch::tomli-2.0.1-pyhd8ed1ab_0 None
  tzdata             conda-forge/noarch::tzdata-2024a-h0c530f3_0 None
  ucrt               conda-forge/win-64::ucrt-10.0.22621.0-h57928b3_0 None
  uriparser          conda-forge/win-64::uriparser-0.9.8-h5a68840_0 None
  urllib3            conda-forge/noarch::urllib3-2.2.1-pyhd8ed1ab_0 None
  vc                 conda-forge/win-64::vc-14.3-hcf57466_18 None
  vc14_runtime       conda-forge/win-64::vc14_runtime-14.38.33130-h82b7239_18 None
  vs2015_runtime     conda-forge/win-64::vs2015_runtime-14.38.33130-hcb4865c_18 None
  wheel              conda-forge/noarch::wheel-0.43.0-pyhd8ed1ab_1 None
  win_inet_pton      conda-forge/noarch::win_inet_pton-1.1.0-pyhd8ed1ab_6 None
  xerces-c           conda-forge/win-64::xerces-c-3.2.5-h63175ca_0 None
  xz                 conda-forge/win-64::xz-5.2.6-h8d14728_0 None
  yaml               conda-forge/win-64::yaml-0.2.5-h8ffe710_2 None
  zlib               conda-forge/win-64::zlib-1.2.13-hcfcfb64_5 None
  zstd               conda-forge/win-64::zstd-1.5.6-h0ea2cb4_0 None


Proceed ([y]/n)? y


Downloading and Extracting Packages
python-3.12.3        | 15.4 MB   | ############################### | 100%
libclang13-18.1.5    | 24.2 MB   | ############################### | 100%
aws-c-http-0.8.1     | 177 KB    | ############################### | 100%
aws-checksums-0.1.18 | 51 KB     | ############################### | 100%
intel-openmp-2024.1. | 1.5 MB    | ############################### | 100%
aws-c-event-stream-0 | 53 KB     | ############################### | 100%
yaml-0.2.5           | 62 KB     | ############################### | 100%
font-ttf-ubuntu-0.83 | 1.5 MB    | ############################### | 100%
pyqt-5.15.9          | 3.7 MB    | ############################### | 100%
libpng-1.6.43        | 339 KB    | ############################### | 100%
gst-plugins-base-1.2 | 2.0 MB    | ############################### | 100%
charset-normalizer-3 | 46 KB     | ############################### | 100%
pygments-2.18.0      | 859 KB    | ############################### | 100%
ca-certificates-2024 | 152 KB    | ############################### | 100%
bzip2-1.0.8          | 122 KB    | ############################### | 100%
packaging-24.0       | 49 KB     | ############################### | 100%
azure-core-cpp-1.11. | 474 KB    | ############################### | 100%
glib-tools-2.80.1    | 93 KB     | ############################### | 100%
exiv2-0.28.2         | 892 KB    | ############################### | 100%
libarchive-3.7.2     | 942 KB    | ############################### | 100%
libcrc32c-1.1.2      | 25 KB     | ############################### | 100%
libhwloc-2.10.0      | 2.3 MB    | ############################### | 100%
m2w64-gcc-libs-5.3.0 | 520 KB    | ############################### | 100%
win_inet_pton-1.1.0  | 8 KB      | ############################### | 100%
libiconv-1.17        | 621 KB    | ############################### | 100%
qca-2.3.8            | 723 KB    | ############################### | 100%
azure-identity-cpp-1 | 353 KB    | ############################### | 100%
snappy-1.2.0         | 58 KB     | ############################### | 100%
libexpat-2.6.2       | 136 KB    | ############################### | 100%
libwebp-base-1.4.0   | 268 KB    | ############################### | 100%
pyqt5-sip-12.12.2    | 78 KB     | ############################### | 100%
gsl-2.7              | 1.7 MB    | ############################### | 100%
tk-8.6.13            | 3.3 MB    | ############################### | 100%
tomli-2.0.1          | 16 KB     | ############################### | 100%
glog-0.7.0           | 111 KB    | ############################### | 100%
libnetcdf-4.9.2      | 610 KB    | ############################### | 100%
liblapacke-3.9.0     | 4.9 MB    | ############################### | 100%
brotli-python-1.1.0  | 315 KB    | ############################### | 100%
dataclasses-0.8      | 10 KB     | ############################### | 100%
libboost-headers-1.8 | 13.2 MB   | ############################### | 100%
pdal-2.7.1           | 2.8 MB    | ############################### | 100%
sip-6.7.12           | 576 KB    | ############################### | 100%
urllib3-2.2.1        | 92 KB     | ############################### | 100%
idna-3.7             | 51 KB     | ############################### | 100%
jinja2-3.1.4         | 109 KB    | ############################### | 100%
pcre2-10.43          | 799 KB    | ############################### | 100%
kealib-1.5.3         | 130 KB    | ############################### | 100%
lcms2-2.16           | 496 KB    | ############################### | 100%
xerces-c-3.2.5       | 3.4 MB    | ############################### | 100%
msys2-conda-epoch-20 | 3 KB      | ############################### | 100%
nose2-0.9.2          | 91 KB     | ############################### | 100%
libbrotlicommon-1.1. | 69 KB     | ############################### | 100%
six-1.16.0           | 14 KB     | ############################### | 100%
qjson-0.9.0          | 54 KB     | ############################### | 100%
libspatialite-5.1.0  | 8.0 MB    | ############################### | 100%
blosc-1.21.5         | 49 KB     | ############################### | 100%
libgdal-3.8.5        | 8.2 MB    | ############################### | 100%
vc14_runtime-14.38.3 | 732 KB    | ############################### | 100%
poppler-24.04.0      | 2.2 MB    | ############################### | 100%
librttopo-1.1.0      | 393 KB    | ############################### | 100%
lxml-5.2.1           | 1.0 MB    | ############################### | 100%
setuptools-69.5.1    | 490 KB    | ############################### | 100%
libgoogle-cloud-2.23 | 14 KB     | ############################### | 100%
pixman-0.43.4        | 451 KB    | ############################### | 100%
markupsafe-2.1.5     | 28 KB     | ############################### | 100%
freetype-2.12.1      | 498 KB    | ############################### | 100%
postgresql-16.2      | 17.8 MB   | ############################### | 100%
ucrt-10.0.22621.0    | 1.2 MB    | ############################### | 100%
pyqtwebkit-5.15.9    | 121 KB    | ############################### | 100%
libabseil-20240116.2 | 1.7 MB    | ############################### | 100%
mkl-2024.1.0         | 104.4 MB  | ############################### | 100%
hdf5-1.14.3          | 1.9 MB    | ############################### | 100%
pcraster-4.4.1       | 5.0 MB    | ############################### | 100%
libwebp-1.4.0        | 69 KB     | ############################### | 100%
blas-devel-3.9.0     | 16 KB     | ############################### | 100%
numpy-1.26.4         | 6.2 MB    | ############################### | 100%
libre2-11-2023.09.01 | 251 KB    | ############################### | 100%
sqlite-3.45.3        | 852 KB    | ############################### | 100%
libglib-2.80.1       | 3.6 MB    | ############################### | 100%
tiledb-2.22.0        | 3.0 MB    | ############################### | 100%
libdeflate-1.20      | 152 KB    | ############################### | 100%
libzip-1.10.1        | 143 KB    | ############################### | 100%
gstreamer-1.24.3     | 1.9 MB    | ############################### | 100%
laz-perf-3.4.0       | 102 KB    | ############################### | 100%
pytz-2024.1          | 184 KB    | ############################### | 100%
gflags-2.2.2         | 80 KB     | ############################### | 100%
lz4-c-1.9.4          | 131 KB    | ############################### | 100%
uriparser-0.9.8      | 48 KB     | ############################### | 100%
libbrotlidec-1.1.0   | 32 KB     | ############################### | 100%
libpq-16.2           | 3.5 MB    | ############################### | 100%
toml-0.10.2          | 18 KB     | ############################### | 100%
vc-14.3              | 17 KB     | ############################### | 100%
libbrotlienc-1.1.0   | 241 KB    | ############################### | 100%
httplib2-0.22.0      | 93 KB     | ############################### | 100%
icu-73.2             | 12.8 MB   | ############################### | 100%
qwt-6.2.0            | 3.4 MB    | ############################### | 100%
zlib-1.2.13          | 105 KB    | ############################### | 100%
libjpeg-turbo-3.0.0  | 804 KB    | ############################### | 100%
requests-2.31.0      | 55 KB     | ############################### | 100%
aws-c-io-0.14.7      | 156 KB    | ############################### | 100%
aws-c-cal-0.6.12     | 45 KB     | ############################### | 100%
azure-storage-common | 219 KB    | ############################### | 100%
openssl-3.3.0        | 8.0 MB    | ############################### | 100%
minizip-4.0.5        | 83 KB     | ############################### | 100%
libxml2-2.12.6       | 1.5 MB    | ############################### | 100%
libprotobuf-4.25.3   | 5.4 MB    | ############################### | 100%
spdlog-1.13.0        | 157 KB    | ############################### | 100%
coverage-7.5.1       | 367 KB    | ############################### | 100%
plotly-5.22.0        | 5.1 MB    | ############################### | 100%
mkl-include-2024.1.0 | 768 KB    | ############################### | 100%
eigen-3.4.0          | 1.0 MB    | ############################### | 100%
libgrpc-1.62.2       | 15.4 MB   | ############################### | 100%
m2w64-gcc-libs-core- | 214 KB    | ############################### | 100%
libkml-1.3.0         | 1.7 MB    | ############################### | 100%
ceres-solver-2.2.0   | 879 KB    | ############################### | 100%
aws-sdk-cpp-1.11.267 | 3.3 MB    | ############################### | 100%
lerc-4.0.0           | 190 KB    | ############################### | 100%
blas-2.122           | 17 KB     | ############################### | 100%
cairo-1.18.0         | 1.4 MB    | ############################### | 100%
openjpeg-2.5.2       | 232 KB    | ############################### | 100%
pysocks-1.7.1        | 19 KB     | ############################### | 100%
libcurl-8.7.1        | 323 KB    | ############################### | 100%
libsqlite-3.45.3     | 850 KB    | ############################### | 100%
re2-2023.09.01       | 202 KB    | ############################### | 100%
ply-3.11             | 48 KB     | ############################### | 100%
draco-1.5.7          | 2.3 MB    | ############################### | 100%
curl-8.7.1           | 150 KB    | ############################### | 100%
libcblas-3.9.0       | 5.0 MB    | ############################### | 100%
qt-main-5.15.8       | 57.0 MB   | ############################### | 100%
wheel-0.43.0         | 57 KB     | ############################### | 100%
glib-2.80.1          | 559 KB    | ############################### | 100%
c-ares-1.28.1        | 155 KB    | ############################### | 100%
m2w64-libwinpthread- | 31 KB     | ############################### | 100%
libvorbis-1.3.7      | 267 KB    | ############################### | 100%
libzlib-1.2.13       | 54 KB     | ############################### | 100%
certifi-2024.2.2     | 157 KB    | ############################### | 100%
geotiff-1.7.1        | 123 KB    | ############################### | 100%
tbb-2021.12.0        | 158 KB    | ############################### | 100%
mkl-devel-2024.1.0   | 5.0 MB    | ############################### | 100%
proj-9.4.0           | 2.6 MB    | ############################### | 100%
libaec-1.1.3         | 32 KB     | ############################### | 100%
libintl-0.22.5       | 94 KB     | ############################### | 100%
libspatialindex-1.9. | 437 KB    | ############################### | 100%
aws-c-compression-0. | 22 KB     | ############################### | 100%
libogg-1.3.4         | 34 KB     | ############################### | 100%
lzo-2.10             | 139 KB    | ############################### | 100%
aws-c-s3-0.5.7       | 102 KB    | ############################### | 100%
pyparsing-3.1.2      | 87 KB     | ############################### | 100%
xz-5.2.6             | 213 KB    | ############################### | 100%
aws-c-auth-0.7.18    | 98 KB     | ############################### | 100%
tzdata-2024a         | 117 KB    | ############################### | 100%
vs2015_runtime-14.38 | 17 KB     | ############################### | 100%
m2w64-gcc-libgfortra | 342 KB    | ############################### | 100%
psycopg2-2.9.9       | 167 KB    | ############################### | 100%
gdal-3.8.5           | 1.5 MB    | ############################### | 100%
expat-2.6.2          | 224 KB    | ############################### | 100%
pyproj-3.6.1         | 708 KB    | ############################### | 100%
liblapack-3.9.0      | 4.9 MB    | ############################### | 100%
future-1.0.0         | 356 KB    | ############################### | 100%
libgoogle-cloud-stor | 14 KB     | ############################### | 100%
qtkeychain-0.14.3    | 33 KB     | ############################### | 100%
qtwebkit-5.212       | 10.5 MB   | ############################### | 100%
libxslt-1.1.39       | 409 KB    | ############################### | 100%
libboost-1.84.0      | 2.3 MB    | ############################### | 100%
python-dateutil-2.9. | 218 KB    | ############################### | 100%
pyyaml-6.0.1         | 164 KB    | ############################### | 100%
cfitsio-4.4.0        | 591 KB    | ############################### | 100%
m2w64-gmp-6.1.0      | 726 KB    | ############################### | 100%
hdf4-4.2.15          | 761 KB    | ############################### | 100%
libintl-devel-0.22.5 | 40 KB     | ############################### | 100%
geos-3.12.1          | 1.5 MB    | ############################### | 100%
nitro-2.7.dev8       | 524 KB    | ############################### | 100%
fontconfig-2.14.2    | 186 KB    | ############################### | 100%
khronos-opencl-icd-l | 84 KB     | ############################### | 100%
pthreads-win32-2.9.1 | 141 KB    | ############################### | 100%
krb5-1.21.2          | 694 KB    | ############################### | 100%
libssh2-1.11.0       | 261 KB    | ############################### | 100%
aws-c-sdkutils-0.1.1 | 52 KB     | ############################### | 100%
libblas-3.9.0        | 4.9 MB    | ############################### | 100%
pip-24.0             | 1.3 MB    | ############################### | 100%
mock-5.1.0           | 33 KB     | ############################### | 100%
azure-storage-blobs- | 939 KB    | ############################### | 100%
zstd-1.5.6           | 341 KB    | ############################### | 100%
freexl-2.0.0         | 76 KB     | ############################### | 100%
qgis-3.36.2          | 69.4 MB   | ############################### | 100%
aws-c-mqtt-0.10.4    | 155 KB    | ############################### | 100%
libtiff-4.6.0        | 769 KB    | ############################### | 100%
fmt-10.2.1           | 181 KB    | ############################### | 100%
owslib-0.30.0        | 136 KB    | ############################### | 100%
aws-crt-cpp-0.26.8   | 243 KB    | ############################### | 100%
python_abi-3.12      | 7 KB      | ############################### | 100%
tenacity-8.3.0       | 23 KB     | ############################### | 100%
qscintilla2-2.14.1   | 1.2 MB    | ############################### | 100%
aws-c-common-0.9.17  | 219 KB    | ############################### | 100%
Preparing transaction: done
Verifying transaction: done
Executing transaction: done
#
# To activate this environment, use
#
#     $ conda activate pcrasterENV
#
# To deactivate an active environment, use
#
#     $ conda deactivate

Retrieving notices: ...working... done

(base) C:\Users\`HYJ7>conda activate pcrasterENV
(pcrasterENV) C:\Users\`HYJ7>qgis

That is it!