
Kick off your GIS programming journey with Python basics, Geopandas and Shapely, PostgreSQL with QGis, and hands-on projects analyzing earthquake and covid-19 trends.
Install Python 3.13 on Windows and add Python to the path, then install VS Code and verify the setup by running a test Python file.
Install and configure Anaconda on Windows, use Anaconda Navigator and Anaconda Prompt, verify the base environment and Python version 3.2.7, and prepare to clone the ArcGIS Python environment.
Clone the ArcGIS Pro Python environment using Anaconda by creating a conda environment named pro clone, activate it, and verify arcpy availability before installing geopandas and shapely.
Learn to set up a single Python environment with geopandas, shapely, and Jupyter Notebook using the conda-forge channel, avoid pip installs, and verify installations in VSCode.
Learn how Jupyter Notebook provides an open source, web-based interactive environment for live code, equations, visualizations, and explanatory text, and compare it with Jupyter Lab and Google Colab.
Learn to open and use the Jupyter Notebook interface in VS Code, configure a Python 3 kernel, run and manage cells, and switch between code and markdown for documentation.
Troubleshoot Jupyter notebook in GIS programming by managing conda environments, verifying arcpy compatibility, and avoiding pip upgrades that disrupt Esri channel and ArcGIS Pro setups.
Learn python basics by defining variables, comments, and data types such as strings, integers, floats, booleans, lists, tuples, dictionaries, and sets; master typecasting and multiple assignments.
Learn how to use f-strings in Python to embed variables, perform calculations, call functions, and create multi-line strings, contrasting with older dot format notation.
Explore Python operators and expressions—arithmetic, modulus, and power, plus comparison, logical, and membership checks with examples using a, b, x, and y.
Learn how to take user inputs using the input function, convert strings to float or integer, and perform simple operations like summing two numbers for GIS programming tasks.
Master conditional statements in Python for GIS programming by exploring if, else, elif, and nested conditions with practical age and citizenship voting examples.
Explore looping in Python by implementing while and for loops, using range, break, continue, and nested loops to build a multiplication table.
Define and call Python functions using def, explore parameters, return values, and keyword arguments; practice with greet, multiply, and is_even while mastering indentation.
Explore global and local variables in Python, showing how locals stay inside functions while globals are accessible outside, and how to modify globals with the global keyword.
Explore Python lists, including defining mixed-type lists, accessing elements with zero-based and negative indexing, slicing ranges, and updating items to manipulate fruits and numbers.
Master Python list methods by exploring append, insert, remove, and pop, then sort and reverse for ordering, count occurrences, and clear the list, illustrated with practical fruit examples.
Explore tuples and their associated methods, including immutability, indexing, slicing, packing and unpacking, and common operations like count and index, with practical Python examples.
Explore sets in Python, which store unique, unordered, mutable values across data types and support add, update, remove, pop, clear, and defining empty sets with set().
Explore dictionaries in Python by defining key-value pairs, accessing and editing values, and adding new keys. Loop through items with methods like keys, values, items, pop, del, and clear.
Learn to manipulate strings in Python by measuring length, concatenating and slicing, then applying upper, lower, title, strip, replace, split, and join, including escape sequences like newline and tab.
Master Python file handling with the open function, using read, write, and append modes to create and modify text files like test.txt.
Learn the basics of Python error handling, distinguishing syntax errors from logical errors, and implement try-except blocks with finally and else for robust scripts that analyze spatial data.
Define classes and their objects in Python by implementing constructors and methods, using self to store attributes, and computing circle area and perimeter with dedicated class methods.
Learn how Python inheritance lets a child class reuse and extend a parent class's methods and properties, with single inheritance and method overriding.
Learn how Python modules work by importing a math_functions module into main.py, reuse functions, and guard execution with if __name__ == '__main__' to avoid automatic code when imported.
Learn how to create and use Python packages by organizing modules into folders with __init__.py and importing tools from within the package, such as math and string functions.
Learn how lambda functions provide anonymous one-line Python logic and how map applies a function to every item in an iterable, with examples doubling numbers.
Learn how to use lambda functions with map, filter, and reduce in GIS programming to process iterables, filter even numbers, and compute sums and products.
Explore how Python's built-in modules—math, random, os, and time—are imported and used to perform math operations, random selections, directory management, and timed pauses.
Create and manage Python virtual environments to isolate packages, install external modules with pip or conda, and activate or deactivate environments for gis projects using geopandas, shapely, and arcpy.
Develop a weather CLI tool in Python that accepts a city name, fetches JSON data from a free API, and prints temperature, humidity, wind speed, sunrise, and sunset.
Explore shapely, the Python library for geometric manipulation and analysis, and master six geometry types—point, line string, polygon, multipoint, multi line string, and multi polygon.
Learn how to create polygons with holes using an outer shell and inner holes, and construct multipoint, multi-line string, and multi polygon geometries in Shapley.
Explore geometric properties by calculating area and length for polygons and multi polygons, determining bounds and centroid, and accessing coordinates from points, lines, and polygons.
Explore spatial relationships and predicates in GIS programming by testing intersect, contents, within, touches, disjoint, and overlaps with points, lines, and polygons in Python notebooks.
Explore spatial relations in GIS programming, covering contains, within, touches, disjoint, cross, overlaps, and distance with boundary considerations.
Explore geometric operations in GIS programming, focusing on buffer with distance, resolution, and cap styles for points and lines, and compare circular versus flat-ended buffers via plotting.
Apply simplify using the Douglas PCA algorithm with a tolerance and topology preservation, and use envelope as the bounding box and convex hulls around points to bound geometry.
Explore linear referencing by projecting a point onto a line to compute distance, then interpolate to recover points and split lines at points to form segments and geometric collections.
Explore set operations in Shapely, including union, intersection, difference, symmetric difference, and unary union, to merge and analyze overlapping polygons with validity checks.
Explore difference and symmetric difference between geometries, then introduce unary union to merge multiple geometry types—polygon, line, and point—into a single collection.
Welcome back to a new chapter in GIS programming. Skip this chapter if you have already completed the WebGIS from Beginner to Advanced course; new students should continue this chapter.
Learn how PostgreSQL and the PostGIS extension store and manipulate spatial data for web maps, with installation, cloud hosting, multi-user editing, spatial indexing, and security basics.
Install PostgreSQL on Windows, select the latest 16.3 64-bit, set a superuser password, and install PostGIS via Stack Builder, then start PgAdmin 4 for management.
Learn to set up PostgreSQL with PostGIS, create a database, and enable the PostGIS extension via pgadmin4, then connect to QGIS (and ArcGIS) to load and render spatial data.
Learn how GeoJSON encodes geographic data as JSON, including points, lines, and polygons, with non-spatial attributes. Explore converting shapefiles to GeoJSON, RFC 7946 standards, and benefits over shapefiles using QGIS.
Load spatial data into PostgreSQL using GeoJSON, export with GDAL in QGIS, and view geometry on maps while exploring formats, geometry types, and basic SQL concepts.
Return to a new chapter that connects to the Webgis From Beginner to Advanced course, guiding returning students to skip if they have taken it, and encouraging students to continue.
Learn the basics of SQL, the structured query language for querying and manipulating data in databases, and the CRUD create, read, update, delete operations in PostgreSQL.
Learn to read data from a hotel list using select, where, order by, and group by, with column selection, aliasing, null checks, and aggregates like sum, avg, and count.
Learn how to update existing data in SQL using update statements, the set clause, and where conditions, with examples updating the hotel list's city and country.
Master delete operations in SQL by deleting rows with conditions, backing up data with copy techniques, and safely dropping tables, recognizing there is no undo.
Execute sql commands to alter tables, rename tables and columns, and drop columns in the hotel list, and learn to change a column's data type to double precision.
Continue this gis programming chapter and explore its connection to the webgis from beginner to advanced course. Skip this chapter if you have already completed that course.
Learn how to set up and connect a remote cloud-based PostgreSQL instance with PgAdmin and QGIS, compare free tiers from Supabase, Neon, and IBM, and secure webgis access.
Create a free PostgreSQL instance on the cloud by selecting a provider, region, and free plan. Prepare to connect with Pgadmin and QGis in the next steps.
Learn to connect a remote PostgreSQL instance to Pgadmin and QGis, create a web map database, and enable the Postgres extension for future spatial data loading.
Load spatial data from geojson into a remote PostgreSQL database, back up pipelines and buildings as SQL files, and verify data integrity and primary keys across remote and local instances.
Explore spatial indexing in PostgreSQL, create gist-based indexes on buildings and pipelines, and load data faster for webgis portals while improving performance and data management.
Explore geopandas, an open source python library that extends pandas to handle geospatial data. Understand data structures such as GeoSeries and GeoDataFrame and manipulate points, lines, and polygons.
Learn to read GIS data with Geopandas, load shapefiles, GeoJSON, CSV, and more, inspect data with head and tail, and plot by building type, stories, and population while checking CRS.
Discover how to read data from geodatabases and shapefiles, work with GeoJSON, and load PostgreSQL data using geopandas, Fiona, and psycopg2.
Learn to read data from a PostgreSQL database using the cursor method, with autocommit, execute, and fetch, then read CSV and Excel files using pandas and geopandas.
Learn to filter geodataframes with Geopandas by cleaning data, dropping unused columns, renaming fields, and applying in-place changes, with outputs to shapefile, GeoJSON, or JSON.
Learn how to filter a geodataframe by attributes in gis programming, including the unique method, the in method, and the easy method for diameter millimetre.
Learn how to write a GeoDataFrame to multiple formats using geopandas' to_file method, including shapefile, GeoJSON, and CSV, with attention to output directories and column name limits.
Explore geodataframe basics by using the columns, index, and shape methods, then create a subset with location, category and geometry, and export as geojson.
Explore geodataframe indexing with the loc and iloc methods, learning to subset data by rows and columns, use range selections, and assign values for precise data extraction.
Explore how the GeoDataFrame add method assigns a value to a single cell, unlike the lock method. Compare loc/iloc for access and at/iat for assignment.
Learn the difference between geodataframe and geoseries, and apply area, length, buffer, and centroid methods within a projected coordinate system.
Learn to perform mathematical operations on geodataframe columns, create a difference column from length values, and loop through rows with iterrows to compute the sum of the difference.
Learn to handle multiple geometries in a geopandas data frame by using set_geometry to switch to centroid, and preview key geodataframe methods like dissolve and unary_union.
Learn to dissolve a geodataframe by category, clean and standardize category values, and save the results as GeoJSON files for visualization.
Create envelopes as bounding boxes from dissolve results, then use erase to subtract buildings and reveal a rectangle with holes representing building footprints.
Learn how unary union on a geodataframe produces a single multi polygon geometry, contrasts with dissolve returning a dataframe, and explains saving steps and file limitations in GIS programming.
Convert multi polygons to single polygons in gis programming using unary union, geoms, and geodataframe, then save as shapefile or geojson while preserving attributes and crs.
Learn how to merge and concatenate geodataframes into a single dataframe using pandas and the pd.concat method, including loading data with Fiona and understanding columns and shapes.
Use the apply method on a geodataframe to categorize pipeline lengths after projecting to a suitable CRS, and compare its speed with a row-wise approach.
Learn how to convert shapely geometries to a geopandas geodataframe, set a CRS, and plot, then combine multiple geometry types and save to GeoJSON while noting shapefile limitations.
Reject the myth that ArcPy is the best GIS Python library; it's proprietary, Windows-only, and lacks multithreading, with Linux limitations. Learn cloning ArcGIS Pro's environment via Anaconda for geopandas workflows.
Get started with ArcPy by exploring prewritten ArcGIS Pro functions, comparing it with Geopandas and shapely, and setting up a data workspace with shapefiles.
Create a file geodatabase with arcpy, then describe a feature class or shapefile to view its properties and spatial reference, including utm zone 46 north, and build a point geometry.
Create line and polygon geometries using ArcPy by building point arrays, save them to disk with copy features, and export as shapefiles for later use.
Explore attribute table operations in ArcGIS Pro, including adding and deleting fields, calculating fields and geometry attributes, and joining tables with Excel, while managing schema locks.
Learn to alter and calculate fields in an attribute table with ArcGIS Pro, handle geodatabase inputs, and build a Python function to flag urgent actions based on condition.
Join a feature class with an external Excel file and validate the join. Then perform select by attribute and select by location to identify trees requiring urgent action in parks.
Perform select by attribute and select by location to identify trees within park parcels, using memory and Python commands in a geodatabase.
Explore data management by importing a CSV with x, y, species, and condition, creating an x,y event layer, and exporting to a shapefile in a geodatabase using arcpy.
Explore data analysis tools in arcpy, including buffer, ring buffer, clip, dissolve, and erase, with practical Python syntax and geodatabase workflows for generating points along lines and creating random points.
Learn to generate points along lines and create random points within land parcels using arcpy, with practical steps on buffers, clipping, and geodatabase workflows.
Explore ArcPy cursor methods: search, update, and insert—to read, update, and insert data in feature classes. Learn field selection, where clauses, and safe cursor handling via with statements.
Master ArcPy cursor methods, including update cursor and insert cursor, updating and inserting tree records by species and inspector name with update_row and insert_row.
Build arcpy toolbox to classify buildings by stories into low, mid, high, and very high rise across shapefiles in ArcGIS Pro, using add field and update cursor to assign category.
Develop a Python script for an ArcGIS Pro toolbox using ArcPy, get parameter, and messages to process shapefiles in a folder and automate classification tasks.
Build a Python-based system that fetches USGS earthquake data via GeoJSON for a chosen time window and magnitude, producing a countrywide earthquake frequency dataset that updates automatically.
Import geopandas, pandas as GPD, arcpy, and requests, fetch GeoJSON earthquake data via an API, extract features and coordinates, build a geo data frame, and save as earthquakes.geojson.
Learn to fetch USGS earthquake data, convert to GeoJSON, format timestamps, define projections, perform a spatial join to compute country earthquake frequency, and create a choropleth map.
Create a Python file to fetch earthquake data from an API, prepare a geodataframe, save a shapefile with projection, and perform a special join in ArcGIS Pro.
**DISCOUNT CODE**: Use the current month in uppercase followed by the year.
Examples: JANUARY2026, FEBRUARY2026, MARCH2026
Are you a GIS Analyst or beginner who wants to take the next step and become a GIS Developer?
Do you want to learn how to use Python, GeoPandas, Shapely, ArcPy, and SQL to automate workflows, analyze spatial data, and build real-world GIS projects?
If yes, then this course is for you!
In A Beginner’s Guide to GIS Programming, you’ll learn how to combine programming with GIS to solve real-world geospatial problems. Starting from Python basics, we’ll gradually move into powerful libraries and tools used in professional GIS development. You don’t need prior programming experience — everything will be explained step by step.
By the end of this course, you’ll be able to:
Write and run Python code for GIS in Jupyter Notebook and VS Code
Manage Python environments with Anaconda
Work with Shapely to create and manipulate geometric objects
Store, query, and manage spatial data using PostgreSQL and PostGIS
Use SQL to interact with databases and clean geospatial data
Read, manipulate, and analyze geospatial datasets with GeoPandas
Automate GIS workflows in ArcGIS Pro using ArcPy
Apply your skills in two real-world projects:
Earthquake Analyzer (USGS Earthquake API)
COVID-19 Trend Analysis (John Hopkins dataset)
This course is designed to help you transition from GIS Analyst to GIS Developer, equipping you with the practical programming skills demanded in today’s geospatial industry.
Whether you are a student, professional, or researcher, this course will give you the confidence to work with geospatial data programmatically, automate repetitive tasks, and build your own GIS tools.
Join today and start your journey into the world of GIS programming!