<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" >

<channel><title><![CDATA[jps services - Blog]]></title><link><![CDATA[https://www.jpsservices.org.uk/blog]]></link><description><![CDATA[Blog]]></description><pubDate>Tue, 28 Apr 2026 00:26:40 +0100</pubDate><generator>Weebly</generator><item><title><![CDATA[MySQL vs PostgreSQL: Which Database Should You Choose in 2026?]]></title><link><![CDATA[https://www.jpsservices.org.uk/blog/mysql-vs-postgresql-which-database-should-you-choose-in-2026]]></link><comments><![CDATA[https://www.jpsservices.org.uk/blog/mysql-vs-postgresql-which-database-should-you-choose-in-2026#comments]]></comments><pubDate>Mon, 27 Apr 2026 15:17:00 GMT</pubDate><category><![CDATA[Uncategorized]]></category><guid isPermaLink="false">https://www.jpsservices.org.uk/blog/mysql-vs-postgresql-which-database-should-you-choose-in-2026</guid><description><![CDATA[MySQL and PostgreSQL are two of the most widely used open‑source databases in the world. Both are mature, reliable and well supported. But they are built on different philosophies, and those differences matter when choosing the right database for a new system or modernising an existing one.This blog explains the practical differences in a clear style,&nbsp;simple language, no jargon, and focused on real‑world use.​1. Overall PositioningMySQL has historically been the default choice for web [...] ]]></description><content:encoded><![CDATA[<div class="paragraph"><span>MySQL and PostgreSQL are two of the most widely used open&#8209;source databases in the world. Both are mature, reliable and well supported. But they are built on different philosophies, and those differences matter when choosing the right database for a new system or modernising an existing one.</span><br><span></span><span>This blog explains the practical differences in a clear style,&nbsp;simple language, no jargon, and focused on real&#8209;world use.</span><br><span></span></div><h2 class="wsite-content-title">&#8203;1. Overall Positioning</h2><div class="paragraph"><span>MySQL has historically been the default choice for web applications, especially those built on the LAMP stack. It is simple, fast and widely supported.</span><br><span></span><span>PostgreSQL has grown rapidly in recent years and is now the preferred database for modern applications, analytics, GIS, and systems that need strong data integrity.</span><br><span></span><span>In short:</span><br><span></span><ul><li><span>MySQL focuses on speed and simplicity</span><br><span></span></li><li><span>PostgreSQL focuses on correctness, features and extensibility</span><br><span></span></li></ul></div><h2 class="wsite-content-title">&#8203;2. Adoption Trends</h2><div class="paragraph"><span>PostgreSQL has overtaken MySQL in developer surveys and is now the most commonly used database in new projects.</span><br><span></span><span>MySQL remains widely deployed, especially in legacy systems and CMS platforms such as WordPress, but PostgreSQL is increasingly the default choice for new development.</span><br><span></span></div><h2 class="wsite-content-title">&#8203;3. Performance Differences</h2><div class="paragraph"><span>Both databases perform well, but they excel in different areas.</span><br><strong>MySQL performs best when:</strong><ul><li><span>Workloads are simple and read&#8209;heavy</span></li><li><span>The application is web&#8209;based and not data&#8209;intensive</span></li><li><span>The priority is speed over advanced features</span></li></ul><strong>PostgreSQL performs best when:</strong><ul><li><span>Queries are complex</span></li><li><span>Data integrity is important</span></li><li><span>The system needs advanced SQL features</span></li><li><span>Spatial data or analytics are required</span></li></ul><span>For most modern applications, PostgreSQL&rsquo;s query planner and feature set give it the edge.</span></div><h2 class="wsite-content-title">&#8203;4. Feature Comparison</h2><div class="paragraph"><strong>PostgreSQL strengths</strong><ul><li><span>Very strong SQL standards compliance</span><br><span></span></li><li><span>Advanced JSON support</span><br><span></span></li><li><span>Window functions and analytical queries</span><br><span></span></li><li><span>Highly extensible (custom data types, operators, extensions)</span><br><span></span></li><li><span>Excellent concurrency handling</span><br><span></span></li></ul><strong>MySQL strengths</strong><ul><li><span>Simple to set up and maintain</span><br><span></span></li><li><span>Fast for basic read&#8209;heavy workloads</span><br><span></span></li><li><span>Multiple storage engines</span><br><span></span></li><li><span>Well supported by hosting providers</span><br><span></span></li></ul><span>PostgreSQL&rsquo;s extensibility is a major reason it is chosen for modern engineering teams.</span><br><span></span></div><h2 class="wsite-content-title">&#8203;5. Spatial Data: A Clear Winner</h2><div class="paragraph">&#8203;<span>PostgreSQL&rsquo;s PostGIS extension is widely regarded as the most advanced open&#8209;source spatial database technology.</span><br><span></span><span>MySQL includes spatial features, but they are far more limited.</span><br><span></span><span>For any organisation working with mapping, assets, inspections or geospatial analysis, PostgreSQL is the obvious choice.</span><br><span></span></div><h2 class="wsite-content-title">&#8203;6. Use&#8209;Case Recommendations</h2><div class="paragraph"><strong>Choose PostgreSQL if you need:</strong><ul><li><span>Complex queries</span><br><span></span></li><li><span>Strong data integrity</span><br><span></span></li><li><span>Spatial data (PostGIS)</span><br><span></span></li><li><span>Multi&#8209;tenant SaaS</span><br><span></span></li><li><span>Analytics or reporting</span><br><span></span></li><li><span>Long&#8209;term scalability</span><br><span></span></li></ul><strong>Choose MySQL if you need:</strong><ul><li><span>A simple, fast database for web applications</span><br><span></span></li><li><span>WordPress or CMS hosting</span><br><span></span></li><li><span>A lightweight system with minimal complexity</span><br><span></span></li></ul></div><h2 class="wsite-content-title">&#8203;7. Summary</h2><div class="paragraph"><span>For most new systems &mdash; especially those involving GIS, analytics, multi&#8209;department data sharing or long&#8209;term scalability &mdash; PostgreSQL is the stronger, more future&#8209;proof choice.</span><br><span></span><span>MySQL still has a place in legacy environments and simple web applications, but PostgreSQL has become the default database for modern development.</span><br><span></span></div><h2 class="wsite-content-title">&#8203;8. Summary Table</h2><div><div id="434946101220349237" align="left" style="width: 100%; overflow-y: hidden;" class="wcustomhtml"><table border="1" cellpadding="8" cellspacing="0"><tr><th>Area</th><th>PostgreSQL</th><th>MySQL</th></tr><tr><td>Design priority</td><td>Correctness and features</td><td>Speed and simplicity</td></tr><tr><td>Best for</td><td>Complex queries, analytics, GIS</td><td>Read&#8209;heavy web apps</td></tr><tr><td>Extensibility</td><td>Very high</td><td>Moderate</td></tr><tr><td>Standards compliance</td><td>Strong</td><td>Weaker</td></tr><tr><td>Spatial support</td><td>Industry&#8209;leading (PostGIS)</td><td>Basic</td></tr><tr><td>Adoption trend</td><td>Increasing</td><td>Stable</td></tr><tr><td>Ideal workloads</td><td>SaaS, analytics, geospatial</td><td>CMS, LAMP, simple apps</td></tr></table></div></div>]]></content:encoded></item><item><title><![CDATA[What’s New in QGIS 3.44]]></title><link><![CDATA[https://www.jpsservices.org.uk/blog/whats-new-in-qgis-344]]></link><comments><![CDATA[https://www.jpsservices.org.uk/blog/whats-new-in-qgis-344#comments]]></comments><pubDate>Mon, 27 Oct 2025 17:55:22 GMT</pubDate><category><![CDATA[Uncategorized]]></category><guid isPermaLink="false">https://www.jpsservices.org.uk/blog/whats-new-in-qgis-344</guid><description><![CDATA[&#8203;Released on 20 June 2025,&nbsp; QGIS 3.44 (Solothurn)&nbsp; marks the last feature-packed release in the 3.x series before the transition to QGIS 4.0. This version refines workflows, boosts performance, and introduces a stunning new way to visualise your data &mdash; making it a worthwhile upgrade for all GIS users.Below is an overview of the main highlights.  &#8203;Explore the World with the New 3D Globe View  &#8203;One of the most exciting new features in QGIS 3.44 is the&nbsp; 3D Glo [...] ]]></description><content:encoded><![CDATA[<div class="paragraph">&#8203;Released on 20 June 2025,&nbsp; QGIS 3.44 (Solothurn)&nbsp; marks the last feature-packed release in the 3.x series before the transition to QGIS 4.0. This version refines workflows, boosts performance, and introduces a stunning new way to visualise your data &mdash; making it a worthwhile upgrade for all GIS users.<br /><br />Below is an overview of the main highlights.<br /></div>  <h2 class="wsite-content-title"><font size="3">&#8203;Explore the World with the New 3D Globe View</font></h2>  <div class="paragraph">&#8203;One of the most exciting new features in QGIS 3.44 is the&nbsp; 3D Globe View . You can now open your map project on a full 3D globe rather than a flat plane, allowing for true planetary-scale visualisation.<br /><br />Key benefits include:<br /><ul><li>Support for&nbsp; 3D Tiles&nbsp; and&nbsp; point-cloud layers&nbsp; directly in Globe View.</li><li>Smooth performance when zooming between local and global scales.</li><li>Simple access via&nbsp; View &rarr; 3D Map Views &rarr; New 3D Globe View .</li></ul><br />For consultants and trainers, this feature offers a visually engaging way to demonstrate global datasets and spatial relationships.</div>  <h2 class="wsite-content-title">&#8203;<font size="3">Workflow and Processing Enhancements</font></h2>  <div class="paragraph">QGIS 3.44 continues to improve the daily user experience with advancements across the Processing toolbox and Expression engine.<br /><br />Highlights include:<br /><ul><li>Enhanced&nbsp; database connectivity&nbsp; for smoother integration with PostGIS and other data sources.</li><li>Faster, more stable&nbsp; processing algorithms&nbsp; for geoprocessing workflows.</li><li>Refined&nbsp; labelling and layout tools , giving better control over print maps and atlas outputs.</li></ul><br />These updates make QGIS more efficient and reliable, particularly when creating deliverables for clients or during live training sessions.</div>  <h2 class="wsite-content-title"><font size="3">&#8203;Smarter Project and Data Management</font></h2>  <div class="paragraph">Version 3.44 introduces several refinements that make working across machines and teams much easier:<br /><ul><li>Improved project portability with enhanced relative path handling.</li><li>More responsive performance when working with large datasets.</li><li>Better compatibility with plugins and third-party data providers.</li></ul><br />This stability and compatibility make 3.44 a strong, dependable platform for production work and teaching environments.</div>  <h2 class="wsite-content-title"><font size="3">&#8203;Why It Matters for Training and Consultancy</font></h2>  <div class="paragraph">&#8203;For those providing GIS training and consultancy &mdash; especially if you work with clients transitioning from ArcGIS or MapBasic &mdash; this release has several advantages:<br /><ul><li>For beginners:&nbsp; The 3D Globe provides an immediate visual &ldquo;wow&rdquo; factor, helping new users grasp spatial concepts quickly.</li><li>For advanced users:&nbsp; Improved automation and processing mean more time analysing data and less time fixing issues.</li><li>For clients:&nbsp; Using the latest QGIS version demonstrates commitment to best practice and modern tools.</li><li>For trainers:&nbsp; QGIS 3.44 ensures stability and plugin compatibility before the move to version 4.0.</li></ul></div>  <h2 class="wsite-content-title">&#8203;<font size="3">Recommended Next Steps</font></h2>  <div class="paragraph">&#8203;1.&nbsp; Update your setup:&nbsp; Install QGIS 3.44 on all training or project computers.<br />2.&nbsp; Revise your materials:&nbsp; Add short examples showing the 3D Globe and layout enhancements.<br />3.&nbsp; Test your plugins:&nbsp; Confirm compatibility before running live demos or workshops.<br />4.&nbsp; Inform your clients:&nbsp; Mention that your deliverables and lessons use QGIS 3.44 for full compatibility.<br />5.&nbsp; Prepare for QGIS 4.0:&nbsp; The next major release will bring the transition to Qt 6, but 3.44 remains a solid, long-term platform.<br></div>  <h2 class="wsite-content-title"><font size="3">&#8203;Final Thoughts</font></h2>  <div class="paragraph">&#8203;QGIS 3.44 is a polished, professional-grade release that rounds off the 3.x series beautifully. The addition of the Globe View, along with numerous workflow and performance improvements, makes it an excellent choice for consultants, educators, and GIS professionals alike.<br /><br />If you haven&rsquo;t yet upgraded, now is a great time to do so &mdash; and to start preparing your workflows and training materials for the next big leap to QGIS 4.0.</div>  <h2 class="wsite-content-title">&#8203;<font size="3">Need Help Getting Started with QGIS 3.44?</font></h2>  <div class="paragraph">&#8203;If you&rsquo;d like support setting up QGIS, migrating existing projects, or providing staff training materials, we can help.<br />Please get in touch and discuss your GIS requirements.</div>]]></content:encoded></item><item><title><![CDATA[Introduction to QGIS]]></title><link><![CDATA[https://www.jpsservices.org.uk/blog/introduction-to-qgis]]></link><comments><![CDATA[https://www.jpsservices.org.uk/blog/introduction-to-qgis#comments]]></comments><pubDate>Thu, 08 May 2025 17:01:10 GMT</pubDate><category><![CDATA[Uncategorized]]></category><guid isPermaLink="false">https://www.jpsservices.org.uk/blog/introduction-to-qgis</guid><description><![CDATA[This blog will provide an overview of QGIS, its interface, and basic navigation.&#8203;What is QGIS?  QGIS (Quantum GIS) is a free, open-source Geographic Information System that allows you to create, edit, visualize, analyse, and publish geospatial information on Windows, Mac, Linux, and mobile devices. It supports vector, raster, and database formats.&#8203;Interface Overview  When you first open QGIS, you&rsquo;ll see the following main components:&#8203;Menu Bar: Contains menus for various f [...] ]]></description><content:encoded><![CDATA[<div class="paragraph">This blog will provide an overview of QGIS, its interface, and basic navigation.<br />&#8203;<br /><strong>What is QGIS?</strong></div>  <div class="paragraph">QGIS (Quantum GIS) is a free, open-source Geographic Information System that allows you to create, edit, visualize, analyse, and publish geospatial information on Windows, Mac, Linux, and mobile devices. It supports vector, raster, and database formats.<br /><strong><br />&#8203;Interface Overview</strong></div>  <div class="paragraph">When you first open QGIS, you&rsquo;ll see the following main components:<br />&#8203;<br /><strong>Menu Bar</strong>: Contains menus for various functions like Project, Edit, View, Layer, Settings, Plugins, Vector, Raster, Database, Web, Processing, and Help.</div>  <div><div class="wsite-image wsite-image-border-none " style="padding-top:10px;padding-bottom:10px;margin-left:0;margin-right:0;text-align:center"> <a> <img src="https://www.jpsservices.org.uk/uploads/1/2/4/6/12463370/menu-bar_orig.png" alt="Picture" style="width:auto;max-width:100%" /> </a> <div style="display:block;font-size:90%"></div> </div></div>  <div class="paragraph"><strong>Toolbar</strong>: Quick access to common tools such as zoom, pan, selection, and layer management.<br /><br /></div>  <div><div class="wsite-image wsite-image-border-none " style="padding-top:10px;padding-bottom:10px;margin-left:0;margin-right:0;text-align:center"> <a> <img src="https://www.jpsservices.org.uk/uploads/1/2/4/6/12463370/toolbar_orig.png" alt="Picture" style="width:auto;max-width:100%" /> </a> <div style="display:block;font-size:90%"></div> </div></div>  <div class="paragraph"><strong>Layers Panel:</strong> Lists all the layers in your project. You can manage layer visibility, group layers, and set properties here.<br /><span></span></div>  <div><div class="wsite-image wsite-image-border-none " style="padding-top:10px;padding-bottom:10px;margin-left:0;margin-right:0;text-align:center"> <a> <img src="https://www.jpsservices.org.uk/uploads/1/2/4/6/12463370/layers-panel_orig.png" alt="Picture" style="width:auto;max-width:100%" /> </a> <div style="display:block;font-size:90%"></div> </div></div>  <div class="paragraph"><strong>Browser Panel:</strong> Provides easy access to your data sources including local files, databases, and web services.<br /><span></span></div>  <div><div class="wsite-image wsite-image-border-none " style="padding-top:10px;padding-bottom:10px;margin-left:0;margin-right:0;text-align:center"> <a> <img src="https://www.jpsservices.org.uk/uploads/1/2/4/6/12463370/browser-panel_orig.png" alt="Picture" style="width:auto;max-width:100%" /> </a> <div style="display:block;font-size:90%"></div> </div></div>  <div class="paragraph"><strong>Map Canvas:</strong> The main area where your map is displayed and edited.<br /><span></span></div>  <div><div class="wsite-image wsite-image-border-none " style="padding-top:10px;padding-bottom:10px;margin-left:0;margin-right:0;text-align:center"> <a> <img src="https://www.jpsservices.org.uk/uploads/1/2/4/6/12463370/map-canvas_orig.png" alt="Picture" style="width:auto;max-width:100%" /> </a> <div style="display:block;font-size:90%"></div> </div></div>  <div class="paragraph"><strong>Status Bar:</strong> Displays map coordinates, scale, and other useful information.<br /><span></span></div>  <div><div class="wsite-image wsite-image-border-none " style="padding-top:10px;padding-bottom:10px;margin-left:0;margin-right:0;text-align:center"> <a> <img src="https://www.jpsservices.org.uk/uploads/1/2/4/6/12463370/published/status-bar.png?1746725584" alt="Picture" style="width:auto;max-width:100%" /> </a> <div style="display:block;font-size:90%"></div> </div></div>  <div class="paragraph"><strong>Opening QGIS</strong><br /><br /><strong>Launch QGIS</strong>: Double-click the QGIS icon on your desktop or find it in your start menu.<br /><br /><strong>Create a New Project: </strong>Go to Project &gt; New to start a new project. You can also use the New Project button on the toolbar<br /><br /><strong>Understanding the Interface</strong><br /><br /><strong>Menu Bar:</strong><br /><br />Familiarize yourself with the menus.<br /><br />For example, <strong>Project </strong>for project-related tasks, <strong>Layer</strong> for layer management, and <strong>View</strong> for map navigation tools.</div>  <div class="paragraph"><strong>Toolbar:</strong><br /><br />Explore the toolbar icons. Hover over each icon to see a tooltip that describes its function.<br />Common tools include:<br /><strong>Zoom In/Out:</strong> Magnify or reduce the map view.<br /><strong>Pan</strong>: Move the map without changing the zoom level.<br /><strong>Select Features</strong>: Select features from layers.<br /><strong>Identify Features</strong>: Click on a feature to see its attributes.<br /><strong>Measure:</strong> Measure distances and areas on the map.<br /></div>  <div class="paragraph"><strong>Layers Panel:</strong><br /><br />This panel displays all the layers in your project. You can control the visibility of layers by checking or unchecking the boxes next to each layer name. Right-clicking on a layer opens a context menu with options for layer management.</div>  <div class="paragraph"><strong>Browser Panel:</strong><br /><br />This panel helps you navigate through your files and databases. You can drag and drop data directly from the browser to the map canvas.</div>  <div class="paragraph"><strong>Map Canvas:</strong><br /><br />The central part of the interface where your map is displayed. You can interact with the map using the tools from the toolbar.</div>  <div class="paragraph"><strong>Status Bar:</strong><br /><br />Located at the bottom of the QGIS window, it shows useful information such as the current map coordinates, scale, and rendering progress.</div>  <div class="paragraph"><strong>Basic Navigation</strong><br /><br /><strong>Zooming and Panning:</strong><br /><br />Use the Zoom In and Zoom Out tools to change the map view. Alternatively, you can use the scroll wheel on your mouse.<br />Use the Pan tool or hold down the middle mouse button to move the map around.</div>  <div class="paragraph"><strong>Selecting Features:</strong><br /><br />Click on the Select Features tool.<br /><span></span></div>  <div><div class="wsite-image wsite-image-border-none " style="padding-top:10px;padding-bottom:10px;margin-left:0;margin-right:0;text-align:center"> <a> <img src="https://www.jpsservices.org.uk/uploads/1/2/4/6/12463370/select-features_orig.png" alt="Picture" style="width:auto;max-width:100%" /> </a> <div style="display:block;font-size:90%"></div> </div></div>  <div class="paragraph">Then click and drag on the map canvas to select features within the drawn rectangle.<br /><span></span></div>  <div><div class="wsite-image wsite-image-border-none " style="padding-top:10px;padding-bottom:10px;margin-left:0;margin-right:0;text-align:center"> <a> <img src="https://www.jpsservices.org.uk/uploads/1/2/4/6/12463370/click-and-drag-to-select-features_orig.png" alt="Picture" style="width:auto;max-width:100%" /> </a> <div style="display:block;font-size:90%"></div> </div></div>  <div class="paragraph"><strong>Identifying Features:</strong><br /><br />Use the Identify Features tool to click on any feature on the map.<br /><br /></div>  <div><div class="wsite-image wsite-image-border-none " style="padding-top:10px;padding-bottom:10px;margin-left:0;margin-right:0;text-align:center"> <a> <img src="https://www.jpsservices.org.uk/uploads/1/2/4/6/12463370/published/identify-features.png?1746725138" alt="Picture" style="width:auto;max-width:100%" /> </a> <div style="display:block;font-size:90%"></div> </div></div>  <div class="paragraph">&nbsp;A window will pop up displaying the attributes of the selected feature.<br /><br /><span></span></div>  <div><div class="wsite-image wsite-image-border-none " style="padding-top:10px;padding-bottom:10px;margin-left:0;margin-right:0;text-align:center"> <a> <img src="https://www.jpsservices.org.uk/uploads/1/2/4/6/12463370/point-data-information_orig.png" alt="Picture" style="width:auto;max-width:100%" /> </a> <div style="display:block;font-size:90%"></div> </div></div>  <div class="paragraph"><strong>Summary</strong><br />In this blog, we have covered the basic components of the QGIS interface and how to navigate within the software. Understanding the interface is the first step in utilizing QGIS for geospatial analysis and map creation.<br /><br /></div>]]></content:encoded></item><item><title><![CDATA[Repairing Broken Links in a QGIS Project:]]></title><link><![CDATA[https://www.jpsservices.org.uk/blog/repairing-broken-links-in-a-qgis-project]]></link><comments><![CDATA[https://www.jpsservices.org.uk/blog/repairing-broken-links-in-a-qgis-project#comments]]></comments><pubDate>Thu, 13 Mar 2025 17:36:24 GMT</pubDate><category><![CDATA[Uncategorized]]></category><guid isPermaLink="false">https://www.jpsservices.org.uk/blog/repairing-broken-links-in-a-qgis-project</guid><description><![CDATA[Why Broken Links Happen  Working on GIS projects in QGIS (Quantum GIS) can be an enriching experience, but it&rsquo;s not uncommon to encounter issues such as broken links to data sources. Broken links occur when the paths to your data files change, which might happen due to file relocation, renaming, or transfer to a different system. Here&rsquo;s a&nbsp; guide to repairing broken links in a QGIS project to ensure your data is correctly loaded and your project runs smoothly.  Broken links in QG [...] ]]></description><content:encoded><![CDATA[<h2 class="wsite-content-title"><strong>Why Broken Links Happen</strong><br /></h2>  <div class="paragraph">Working on GIS projects in QGIS (Quantum GIS) can be an enriching experience, but it&rsquo;s not uncommon to encounter issues such as broken links to data sources. Broken links occur when the paths to your data files change, which might happen due to file relocation, renaming, or transfer to a different system. Here&rsquo;s a&nbsp; guide to repairing broken links in a QGIS project to ensure your data is correctly loaded and your project runs smoothly.</div>  <h2 class="wsite-content-title"><strong>Broken links in QGIS typically occur due to:</strong></h2>  <div class="paragraph">Moving files: If you move your data files to a different directory or drive.<br />Renaming files or directories: Changing the name of your data files or the directories they reside in.<br />Relative paths: Using relative paths in your project and then moving the entire project to a different location without updating the paths.<br /><span></span></div>  <h2 class="wsite-content-title"><strong>Identifying Broken Links</strong></h2>  <div class="paragraph">&nbsp;When you open a QGIS project with broken links, QGIS will alert you to the missing layers. Here&rsquo;s how you can identify them:<br /><span></span></div>  <div><div class="wsite-image wsite-image-border-none " style="padding-top:10px;padding-bottom:10px;margin-left:0;margin-right:0;text-align:center"> <a> <img src="https://www.jpsservices.org.uk/uploads/1/2/4/6/12463370/published/broken-links-dialogue-box.png?1741888013" alt="Picture" style="width:auto;max-width:100%" /> </a> <div style="display:block;font-size:90%"></div> </div></div>  <h2 class="wsite-content-title"><strong>Notification on Load</strong></h2>  <div class="paragraph">&nbsp;When you open a project, QGIS will display a message box listing the layers that couldn't be found. Select the Keep unavailable layers option.<br /></div>  <h2 class="wsite-content-title"><strong>Layer Panel</strong></h2>  <div class="paragraph">&nbsp;In the Layer Panel, layers with broken links are usually displayed with a red exclamation mark or an error message.<br /><span></span></div>  <div><div class="wsite-image wsite-image-border-none " style="padding-top:10px;padding-bottom:10px;margin-left:0;margin-right:0;text-align:center"> <a> <img src="https://www.jpsservices.org.uk/uploads/1/2/4/6/12463370/red-triange_orig.png" alt="Picture" style="width:auto;max-width:100%" /> </a> <div style="display:block;font-size:90%"></div> </div></div>  <h2 class="wsite-content-title"><strong>Repairing Broken Links</strong></h2>  <div class="paragraph">&nbsp;When the dialog box shows the layers with broken links opt to keep them in the project.<br /><span></span></div>  <div><div class="wsite-image wsite-image-border-none " style="padding-top:10px;padding-bottom:10px;margin-left:0;margin-right:0;text-align:center"> <a> <img src="https://www.jpsservices.org.uk/uploads/1/2/4/6/12463370/keep-available-layers_orig.png" alt="Picture" style="width:auto;max-width:100%" /> </a> <div style="display:block;font-size:90%"></div> </div></div>  <h2 class="wsite-content-title"><strong>Using the Data Source Manager -&nbsp;Open Data Source Manager</strong></h2>  <div class="paragraph">You can open the Data Source Manager by right-clicking on the problematic layer in the Layer Panel and selecting "Repair Data Source&rdquo;<br /><span></span></div>  <div><div class="wsite-image wsite-image-border-none " style="padding-top:10px;padding-bottom:10px;margin-left:0;margin-right:0;text-align:center"> <a> <img src="https://www.jpsservices.org.uk/uploads/1/2/4/6/12463370/repair-data-source_orig.png" alt="Picture" style="width:auto;max-width:100%" /> </a> <div style="display:block;font-size:90%"></div> </div></div>  <h2 class="wsite-content-title"><strong>Change Data Source</strong></h2>  <div class="paragraph">&nbsp;In the "Repair Data Source" dialog box you can browse to the new location of your data file</div>  <div><div class="wsite-image wsite-image-border-none " style="padding-top:10px;padding-bottom:10px;margin-left:0;margin-right:0;text-align:center"> <a> <img src="https://www.jpsservices.org.uk/uploads/1/2/4/6/12463370/repair-data-source-file_orig.png" alt="Picture" style="width:auto;max-width:100%" /> </a> <div style="display:block;font-size:90%"></div> </div></div>  <h2 class="wsite-content-title"><strong>Apply Changes</strong></h2>  <div class="paragraph">After selecting the correct file, click "Apply" and then "OK" to update the data source. Then repeat this process with any other layers containing a red triangle.<br /><span></span></div>  <div><div class="wsite-image wsite-image-border-none " style="padding-top:10px;padding-bottom:10px;margin-left:0;margin-right:0;text-align:center"> <a> <img src="https://www.jpsservices.org.uk/uploads/1/2/4/6/12463370/repaired-link_orig.png" alt="Picture" style="width:auto;max-width:100%" /> </a> <div style="display:block;font-size:90%"></div> </div></div>]]></content:encoded></item><item><title><![CDATA[Exploring QGIS: A Comprehensive Guide to GIS Training]]></title><link><![CDATA[https://www.jpsservices.org.uk/blog/exploring-qgis-a-comprehensive-guide-to-gis-training]]></link><comments><![CDATA[https://www.jpsservices.org.uk/blog/exploring-qgis-a-comprehensive-guide-to-gis-training#comments]]></comments><pubDate>Sat, 09 Mar 2024 18:03:03 GMT</pubDate><category><![CDATA[Uncategorized]]></category><guid isPermaLink="false">https://www.jpsservices.org.uk/blog/exploring-qgis-a-comprehensive-guide-to-gis-training</guid><description><![CDATA[Introduction to QGIS:QGIS, also known as Quantum GIS, is a user-friendly and feature-rich GIS software that enables users to create, edit, visualize, and analyse spatial data with ease. Developed by a global community of GIS enthusiasts and professionals, QGIS offers a robust set of tools and functionalities to support a wide range of GIS tasks, from simple mapping to complex spatial analysis.  User Interface and Navigation: Upon launching QGIS, you'll be greeted with an intuitive user interface [...] ]]></description><content:encoded><![CDATA[<div class="paragraph"><font><font><strong>Introduction to QGIS:</strong><br /><a href="https://qgis.org/en/site/" target="_blank">QGIS</a>, also known as Quantum GIS, is a user-friendly and feature-rich GIS software that enables users to create, edit, visualize, and analyse spatial data with ease. Developed by a global community of GIS enthusiasts and professionals, QGIS offers a robust set of tools and functionalities to support a wide range of GIS tasks, from simple mapping to complex spatial analysis.</font></font></div>  <div class="paragraph"><span><font><font><strong>User Interface and Navigation:</strong> <br />Upon launching QGIS, you'll be greeted with an intuitive user interface designed to facilitate seamless navigation and access to essential tools. The interface consists of various panels, including the Layers panel for managing spatial data layers, the Browser panel for browsing files and databases, and the Map Canvas for viewing and interacting with your maps. Familiarizing yourself with these components will help you navigate QGIS efficiently and make the most of its features.</font></font></span><br /><span></span></div>  <div class="paragraph"><font><font><strong>Importing and Managing Spatial Data:</strong><br />&#8203;QGIS supports a multitude of spatial data formats, including <a href="https://en.wikipedia.org/wiki/Shapefile" target="_blank">shapefiles,</a> <a href="https://en.wikipedia.org/wiki/GeoTIFF" target="_blank">GeoTIFFs</a>, <a href="https://en.wikipedia.org/wiki/Global_Positioning_System" target="_blank">GPS</a> data, and more, making it easy to import and manage your spatial data within the software. Whether you're working with data from a local file or connecting to a remote database, QGIS provides straightforward methods for importing, organizing, and editing your spatial datasets. Understanding how to effectively manage spatial data is essential for conducting meaningful analysis and creating informative maps.</font></font></div>  <div class="paragraph"><font><font><strong>Mapping Tools and Cartographic Design:</strong><br />One of the highlights of QGIS is its powerful mapping tools, which allow users to create visually compelling maps tailored to their specific needs. From basic symbology and labelling options to advanced <a href="https://en.wikipedia.org/wiki/Cartography" target="_blank">cartographic</a> features like scale-dependent rendering and map composer, QGIS provides the flexibility to design maps that effectively communicate spatial data insights. Learning how to leverage these mapping tools will enable you to create professional-quality maps that convey information accurately and effectively.</font></font></div>  <div class="paragraph"><span><font><font><strong>Spatial Analysis Techniques:</strong> <br />In addition to its mapping capabilities, QGIS offers a wide range of spatial analysis tools and functionalities to support data-driven decision-making. Whether you're conducting proximity analysis, spatial interpolation, or complex geoprocessing tasks, QGIS provides the tools and resources you need to perform meaningful spatial analysis. Mastering these spatial analysis techniques will empower you to extract valuable insights from your spatial data and address real-world challenges more effectively.</font></font></span><br /><span></span></div>  <div class="paragraph"><span><font><font>In conclusion, QGIS is a versatile and powerful GIS software that offers a wealth of features and capabilities for spatial data analysis and visualization. By familiarizing yourself with its user interface, mastering its mapping tools, and exploring its spatial analysis techniques, you can unlock the full potential of QGIS and embark on a rewarding journey of GIS exploration and discovery. Remember, learning GIS is a gradual process that requires patience, practice, and perseverance. So don't hesitate to dive in, experiment with different features, and seek guidance from experienced GIS professionals.&nbsp;</font></font></span>&#8203;<br /><span></span></div>]]></content:encoded></item><item><title><![CDATA[Understanding and Using QGIS Scripts: Calculate Total Area (Script Example)]]></title><link><![CDATA[https://www.jpsservices.org.uk/blog/understanding-and-using-qgis-scripts-calculate-total-area-script-example]]></link><comments><![CDATA[https://www.jpsservices.org.uk/blog/understanding-and-using-qgis-scripts-calculate-total-area-script-example#comments]]></comments><pubDate>Fri, 13 Oct 2023 15:58:47 GMT</pubDate><category><![CDATA[Uncategorized]]></category><guid isPermaLink="false">https://www.jpsservices.org.uk/blog/understanding-and-using-qgis-scripts-calculate-total-area-script-example</guid><description><![CDATA[If you're new to GIS (Geographic Information Systems), you might wonder how to perform specific tasks efficiently. QGIS, an open-source GIS software, provides a powerful scripting interface that allows you to automate processes. In this blog, we'll explore a practical example: calculating the total area of features in a vector layer using a custom script. Don't worry; we'll break it down step by step.Why Calculate Total Area?Calculating the total area of features in a vector layer can be essenti [...] ]]></description><content:encoded><![CDATA[<div class="paragraph">If you're new to <a href="https://en.wikipedia.org/wiki/Geographic_information_system" target="_blank">GIS (Geographic Information Systems)</a>, you might wonder how to perform specific tasks efficiently. QGIS, an open-source GIS software, provides a powerful scripting interface that allows you to automate processes. In this blog, we'll explore a practical example: calculating the total area of features in a vector layer using a custom script. Don't worry; we'll break it down step by step.<br /><br /><strong>Why Calculate Total Area?</strong><br />Calculating the total area of features in a vector layer can be essential in various GIS projects. For instance, you might want to determine the total area of land parcels, water bodies, or administrative regions in a map. This information is valuable for urban planning, environmental analysis, and many other applications.<br /><br /><strong>The QGIS Script</strong><br />Here's the <a href="https://www.python.org/" target="_blank">Python</a> script that accomplishes this task:</div>  <div><div class="wsite-image wsite-image-border-none " style="padding-top:10px;padding-bottom:10px;margin-left:0;margin-right:0;text-align:center"> <a> <img src="https://www.jpsservices.org.uk/uploads/1/2/4/6/12463370/published/script.png?1697213852" alt="Picture" style="width:auto;max-width:100%" /> </a> <div style="display:block;font-size:90%"></div> </div></div>  <div><div class="wsite-image wsite-image-border-none " style="padding-top:10px;padding-bottom:10px;margin-left:0;margin-right:0;text-align:center"> <a> <img src="https://www.jpsservices.org.uk/uploads/1/2/4/6/12463370/published/script1.png?1697213627" alt="Picture" style="width:auto;max-width:100%" /> </a> <div style="display:block;font-size:90%"></div> </div></div>  <div><div class="wsite-image wsite-image-border-none " style="padding-top:10px;padding-bottom:10px;margin-left:0;margin-right:0;text-align:center"> <a> <img src="https://www.jpsservices.org.uk/uploads/1/2/4/6/12463370/published/script3.png?1697213568" alt="Picture" style="width:auto;max-width:100%" /> </a> <div style="display:block;font-size:90%"></div> </div></div>  <div class="paragraph"><strong>How the Script Works</strong><br />Let's break down the script into simpler terms:<br /><br />1. <strong>Imports and Class Definition</strong>: The script starts by importing necessary modules from QGIS. Then, it defines a custom algorithm class `CalculateTotalAreaAlgorithm` that inherits from `QgsProcessingAlgorithm`. This class contains several methods that control the algorithm's behavior.<br /><br />2. <strong>Algorithm Configuration:</strong> The `initAlgorithm` method sets up the algorithm's parameters. In this case, it defines the input and output layers.<br /><br />3. <strong>Processing:</strong> The core logic happens in the `processAlgorithm` method. Here's a simplified explanation of what it does:<br />&nbsp; &nbsp;- It retrieves the input vector layer.<br />&nbsp; &nbsp;- It checks if the input source is valid.<br />&nbsp; &nbsp;- It prepares an output layer.<br />&nbsp; &nbsp;- It iterates through the features in the input layer.<br />&nbsp; &nbsp;- For each feature, it checks if the geometry is valid.<br />&nbsp; &nbsp;- If the geometry is valid, it calculates the area and creates a new feature.<br />&nbsp; &nbsp;- The new features are added to the output layer.<br /><br />4. <strong>Result:</strong> The script prints the total area to the Python console and returns the output layer.<br /><br /><strong>Running the Script</strong><br />To run this script in QGIS, you'll need to:<br />1. Open QGIS.<br />2. Go to the 'Processing' menu.<br />3. Open the 'Toolbox.'<br />4. Save your script as 'Calculate Total Area'<br />5. Under 'Scripts,' you should find 'Example Scripts,' and within that, 'Calculate Total Area.'&nbsp;<br /></div>  <div><div class="wsite-image wsite-image-border-none " style="padding-top:10px;padding-bottom:10px;margin-left:0;margin-right:0;text-align:center"> <a> <img src="https://www.jpsservices.org.uk/uploads/1/2/4/6/12463370/published/map.png?1697214876" alt="Picture" style="width:auto;max-width:100%" /> </a> <div style="display:block;font-size:90%"></div> </div></div>  <div class="paragraph">6. Set your input vector layer.<br />7. Choose an output location.<br />8. Click 'Run.'</div>  <div><div class="wsite-image wsite-image-border-none " style="padding-top:10px;padding-bottom:10px;margin-left:0;margin-right:0;text-align:center"> <a> <img src="https://www.jpsservices.org.uk/uploads/1/2/4/6/12463370/published/map1.png?1697215041" alt="Picture" style="width:auto;max-width:100%" /> </a> <div style="display:block;font-size:90%"></div> </div></div>  <div class="paragraph">&#8203;The result will be a new layer with the total area of each feature in the input layer.<br></div>  <div><div class="wsite-image wsite-image-border-none " style="padding-top:10px;padding-bottom:10px;margin-left:0;margin-right:0;text-align:center"> <a> <img src="https://www.jpsservices.org.uk/uploads/1/2/4/6/12463370/published/map2.png?1697215179" alt="Picture" style="width:auto;max-width:100%" /> </a> <div style="display:block;font-size:90%"></div> </div></div>  <div class="paragraph">&#8203;Understanding this script is a great step towards harnessing QGIS's scripting capabilities. You can use this knowledge to automate various GIS tasks. Experiment with it, modify it to suit your needs, and explore other QGIS scripts to expand your GIS skills.</div>]]></content:encoded></item><item><title><![CDATA[Getting Started with the Python Console in QGIS: A Beginner's Guide]]></title><link><![CDATA[https://www.jpsservices.org.uk/blog/getting-started-with-the-python-console-in-qgis-a-beginners-guide]]></link><comments><![CDATA[https://www.jpsservices.org.uk/blog/getting-started-with-the-python-console-in-qgis-a-beginners-guide#comments]]></comments><pubDate>Tue, 10 Oct 2023 16:27:25 GMT</pubDate><category><![CDATA[Uncategorized]]></category><guid isPermaLink="false">https://www.jpsservices.org.uk/blog/getting-started-with-the-python-console-in-qgis-a-beginners-guide</guid><description><![CDATA[&nbsp;Getting Started with the Python Console in QGIS: A Beginner's GuideIn this blog post, we'll explore a fundamental tool within QGIS - the Python Console - and guide you through its basics, step by step. Don't worry if you're new to Python or QGIS; we'll keep it beginner-friendly.Step 1: Opening the Python ConsoleTo access the Python Console in QGIS, follow these simple steps:1. Launch QGIS.2. Go to the "Plugins" menu.3. Select "Python Console."You'll see a new window at the bottom of your Q [...] ]]></description><content:encoded><![CDATA[<div class="paragraph"><strong>&nbsp;Getting Started with the Python Console in QGIS: A Beginner's Guide</strong><br /><br />In this blog post, we'll explore a fundamental tool within <a href="https://en.wikipedia.org/wiki/Geographic_information_system" target="_blank">QGIS</a> - the Python Console - and guide you through its basics, step by step. Don't worry if you're new to <a href="https://www.python.org/" target="_blank">Python</a> or QGIS; we'll keep it beginner-friendly.<br /><br /><strong>Step 1: Opening the Python Console</strong><br /><br />To access the Python Console in QGIS, follow these simple steps:<br /><br />1. Launch QGIS.<br />2. Go to the "Plugins" menu.<br />3. Select "Python Console."<br />You'll see a new window at the bottom of your QGIS interface.&nbsp;&nbsp;</div>  <div><div class="wsite-image wsite-image-border-none " style="padding-top:10px;padding-bottom:10px;margin-left:0;margin-right:0;text-align:center"> <a> <img src="https://www.jpsservices.org.uk/uploads/1/2/4/6/12463370/published/accessing-python-console.png?1696955808" alt="Picture" style="width:auto;max-width:100%" /> </a> <div style="display:block;font-size:90%"></div> </div></div>  <div class="paragraph"><strong>&nbsp;Step 2: Understanding the Python Console Interface</strong><br /><br />Before we start coding, let's understand the layout of the Python Console:<br /><br />The main input area: This is where you'll write your Python code.<br />The "Output" tab: Displays the results of your code execution.<br />The "Log" tab: Shows any error messages or additional information.<br /></div>  <div><div class="wsite-image wsite-image-border-none " style="padding-top:10px;padding-bottom:10px;margin-left:0;margin-right:0;text-align:center"> <a> <img src="https://www.jpsservices.org.uk/uploads/1/2/4/6/12463370/published/main-areas1.png?1696957218" alt="Picture" style="width:auto;max-width:100%" /> </a> <div style="display:block;font-size:90%"></div> </div></div>  <div class="paragraph"><strong>&nbsp;Step 3: Writing Your First Python Script</strong><br /><span></span>Now, let's write a simple Python script to get a feel for the Python Console. Type the following code into the input area:<br /><span></span></div>  <div><div class="wsite-image wsite-image-border-none " style="padding-top:10px;padding-bottom:10px;margin-left:0;margin-right:0;text-align:center"> <a> <img src="https://www.jpsservices.org.uk/uploads/1/2/4/6/12463370/published/hello-world.png?1696957463" alt="Picture" style="width:auto;max-width:100%" /> </a> <div style="display:block;font-size:90%"></div> </div></div>  <div class="paragraph"><span>&nbsp;Press Enter, and you'll see "Hello, QGIS!" in the "Output" tab.</span></div>  <div><div class="wsite-image wsite-image-border-none " style="padding-top:10px;padding-bottom:10px;margin-left:0;margin-right:0;text-align:center"> <a> <img src="https://www.jpsservices.org.uk/uploads/1/2/4/6/12463370/published/hello-world-output.png?1696957940" alt="Picture" style="width:auto;max-width:100%" /> </a> <div style="display:block;font-size:90%"></div> </div></div>  <div class="paragraph"><strong>Step 4: Accessing QGIS Layers</strong><br /><span></span>One of the most powerful aspects of the Python Console in QGIS is its ability to interact with your GIS data. Let's start by accessing a layer. Suppose you have a layer named "Departments_Metro" You can access it like this:<br /><span></span></div>  <div><div class="wsite-image wsite-image-border-none " style="padding-top:10px;padding-bottom:10px;margin-left:0;margin-right:0;text-align:center"> <a> <img src="https://www.jpsservices.org.uk/uploads/1/2/4/6/12463370/accessing-a-layer_orig.png" alt="Picture" style="width:auto;max-width:100%" /> </a> <div style="display:block;font-size:90%"></div> </div></div>  <div class="paragraph">&nbsp;Here, we've created a variable 'layer' that contains our 'Departments_Metro' layer. Note that 'Departments_Metro' should be replaced with the name of your actual layer.<br /></div>  <div class="paragraph"><strong>Step 5: Working with Features</strong><br />Now, let's work with the features within the 'Departments_Metro' layer. We'll iterate through the features and print their attributes:</div>  <div><div class="wsite-image wsite-image-border-none " style="padding-top:10px;padding-bottom:10px;margin-left:0;margin-right:0;text-align:center"> <a> <img src="https://www.jpsservices.org.uk/uploads/1/2/4/6/12463370/print-features_orig.png" alt="Picture" style="width:auto;max-width:100%" /> </a> <div style="display:block;font-size:90%"></div> </div></div>  <div class="paragraph">&nbsp;This code retrieves all the features in the 'Departments_Metro' layer and prints their attributes.<br /></div>  <div><div class="wsite-image wsite-image-border-none " style="padding-top:10px;padding-bottom:10px;margin-left:0;margin-right:0;text-align:center"> <a> <img src="https://www.jpsservices.org.uk/uploads/1/2/4/6/12463370/published/output-of-print-features.png?1696958552" alt="Picture" style="width:auto;max-width:100%" /> </a> <div style="display:block;font-size:90%"></div> </div></div>  <div class="paragraph"><strong>Step 6: Performing Spatial Operations</strong><br />Python in QGIS also allows you to perform spatial operations. For example, you can calculate the area of a polygon feature:</div>  <div><div class="wsite-image wsite-image-border-none " style="padding-top:10px;padding-bottom:10px;margin-left:0;margin-right:0;text-align:center"> <a> <img src="https://www.jpsservices.org.uk/uploads/1/2/4/6/12463370/calculate-area1_orig.png" alt="Picture" style="width:auto;max-width:100%" /> </a> <div style="display:block;font-size:90%"></div> </div></div>  <div class="paragraph">Here is the output from the above code:-</div>  <div><div class="wsite-image wsite-image-border-none " style="padding-top:10px;padding-bottom:10px;margin-left:0;margin-right:0;text-align:center"> <a> <img src="https://www.jpsservices.org.uk/uploads/1/2/4/6/12463370/areas_orig.png" alt="Picture" style="width:auto;max-width:100%" /> </a> <div style="display:block;font-size:90%"></div> </div></div>  <div class="paragraph">In this code, we check if a feature is a polygon and then calculate its area.<br /><br /><strong>Step 7: Saving Your Work</strong>&#8203;<br />The Python Console in QGIS is a versatile tool that empowers GIS specialists like you to automate tasks, manipulate data, and perform complex spatial analyses. In this beginner-friendly guide, we've covered the basics of opening the console, writing and running Python scripts, and interacting with GIS layers. As you continue your journey into the world of QGIS and Python, this knowledge will serve as a solid foundation for more advanced tasks in geographic information science.</div>]]></content:encoded></item><item><title><![CDATA[Integrating QGIS with PHP: Building a Simple QGIS Plugin]]></title><link><![CDATA[https://www.jpsservices.org.uk/blog/integrating-qgis-with-php-building-a-simple-qgis-plugin]]></link><comments><![CDATA[https://www.jpsservices.org.uk/blog/integrating-qgis-with-php-building-a-simple-qgis-plugin#comments]]></comments><pubDate>Mon, 25 Sep 2023 14:49:05 GMT</pubDate><category><![CDATA[Uncategorized]]></category><guid isPermaLink="false">https://www.jpsservices.org.uk/blog/integrating-qgis-with-php-building-a-simple-qgis-plugin</guid><description><![CDATA[Geographic Information Systems (GIS) enthusiasts are continually exploring ways to enhance the functionality of their favourite GIS software, QGIS. While QGIS itself is a powerful tool, its extensibility through plugins allows users to customise it to their specific needs. In this blog post, we'll dive into the world of QGIS plugins and explore a unique integration&mdash;linking QGIS with PHP. As a GIS user, you'll gain insights into QGIS plugin development and learn how to create a simple QGIS  [...] ]]></description><content:encoded><![CDATA[<div class="paragraph"><a href="https://en.wikipedia.org/wiki/Geographic_information_system" target="_blank">Geographic Information Systems (GIS)</a> enthusiasts are continually exploring ways to enhance the functionality of their favourite GIS software, <a href="https://www.qgis.org/en/site/" target="_blank">QGIS</a>. While QGIS itself is a powerful tool, its extensibility through plugins allows users to customise it to their specific needs. In this blog post, we'll dive into the world of QGIS plugins and explore a unique integration&mdash;linking QGIS with <a href="https://www.php.net/" target="_blank">PHP.</a> As a GIS user, you'll gain insights into <a href="https://docs.qgis.org/3.28/en/docs/pyqgis_developer_cookbook/plugins/index.html?highlight=plugins" target="_blank">QGIS plugin development</a> and learn how to create a simple QGIS plugin that interacts with a PHP web application.<br /><br /><strong>The Power of QGIS Plugins</strong><br />QGIS plugins are small software add-ons that extend the capabilities of QGIS. Whether you're looking to streamline workflows, access additional data sources, or perform complex spatial analyses, there's likely a QGIS plugin that can help. These plugins are developed by the QGIS community and third-party developers, making it possible to tailor QGIS to your specific needs.<br /><br /><strong>Getting Started with QGIS Plugin Development</strong><br />Before we look at PHP integration, let's cover the basics of QGIS plugin development:<br /><br />1. <strong>Development Environment Setup</strong><br />To get started with QGIS plugin development, you'll need a development environment. Most QGIS plugins are written in <a href="https://www.python.org/" target="_blank">Python</a>, so having a basic understanding of Python is essential. Install Python, QGIS, and <a href="https://doc.qt.io/qt-6/qtdesigner-manual.html" target="_blank">Qt Designer</a> (a visual tool for designing user interfaces) to set up your development environment.<br /><br />2. <strong>Plugin Builder</strong><br />QGIS offers a handy Plugin Builder tool that simplifies the creation of new plugins. This tool generates a basic plugin template, including the necessary files and folder structure. It's an excellent starting point, especially for beginners, as it takes care of some of the initial setup complexities.</div>  <div class="paragraph">&#8203;3. <strong>Plugin Development</strong><br />Once your development environment is set up, you can start coding your QGIS plugin. QGIS plugins typically consist of a combination of Python scripts, XML files for defining user interfaces, and resources like icons or images.<br /><br />4. <strong>Testing and Debugging</strong><br />QGIS provides a testing framework that allows you to check your plugin's functionality within the QGIS environment. Proper testing and debugging are essential to ensure your plugin works as expected.<br /><br />5. <strong>Documentation and Distribution</strong><br />Documentation is crucial for users who want to install and use your plugin. Fortunately, QGIS provides tools to create user-friendly documentation. After thoroughly testing and documenting your plugin, you can distribute it to others through the official QGIS Plugin Repository or other platforms.<br /><br /><strong>PHP Integration with QGIS</strong><br />Now, let's examine the integration of QGIS with PHP. While Python is the primary language for QGIS plugin development, you can indirectly integrate PHP with QGIS through the following steps:<br /><br />1. <strong>Create a QGIS Plugin</strong><br />In our example, we'll create a simple QGIS plugin that opens a PHP web application when a menu item is clicked.<br /><br />Here's the code for the QGIS plugin:</div>  <div><div class="wsite-image wsite-image-border-none " style="padding-top:10px;padding-bottom:10px;margin-left:0;margin-right:0;text-align:center"> <a> <img src="https://www.jpsservices.org.uk/uploads/1/2/4/6/12463370/published/simple-plugin.png?1695823458" alt="Picture" style="width:auto;max-width:100%" /> </a> <div style="display:block;font-size:90%"></div> </div></div>  <div><div class="wsite-image wsite-image-border-none " style="padding-top:10px;padding-bottom:10px;margin-left:0;margin-right:0;text-align:center"> <a> <img src="https://www.jpsservices.org.uk/uploads/1/2/4/6/12463370/published/init.png?1695823801" alt="Picture" style="width:auto;max-width:100%" /> </a> <div style="display:block;font-size:90%"></div> </div></div>  <div class="paragraph">2. <strong>Create a PHP Web Application</strong><br />Next, develop a simple PHP web application that serves as the integration point between QGIS and PHP. Your PHP application can offer various functionalities, such as displaying maps, running spatial queries, or visualizing GIS data. For simplicity, we'll create an example that displays a "Hello, QGIS World!" message.</div>  <div><div class="wsite-image wsite-image-border-none " style="padding-top:10px;padding-bottom:10px;margin-left:0px;margin-right:0px;text-align:center"> <a href='https://www.jpsservices.org.uk/uploads/1/2/4/6/12463370/edited/index1.png' rel='lightbox' onclick='if (!lightboxLoaded) return false'> <img src="https://www.jpsservices.org.uk/uploads/1/2/4/6/12463370/published/index1.png?1695854312" alt="Picture" style="width:auto;max-width:100%" /> </a> <div style="display:block;font-size:90%"></div> </div></div>  <div class="paragraph">3. <strong>Deploy Your PHP Application</strong><br />Host your PHP web application on a web server or use a local web server like XAMPP or WAMP for development. Ensure that your PHP application is accessible via a URL.<br /><br />4. I<strong>nstall and Use the QGIS Plugin</strong><br />Follow the steps below to install and use the QGIS plugin:<br /><br />- Save the QGIS plugin code as a `.py` file, such as <em>simple_plugin.py</em>.<br />- Copy the file to the QGIS plugins directory. On most systems, this directory is located at:<ul style="color:rgb(55, 65, 81)"><li><span style="color:var(--tw-prose-bold); font-weight:600">Linux</span>: ~/.local/share/QGIS/QGIS3/profiles/default/python/plugins</li><li><span style="color:var(--tw-prose-bold); font-weight:600">Windows</span>: C:\Users\YourUsername\AppData\Roaming\QGIS\QGIS3\profiles\default\python\plugins</li></ul> - Start or restart QGIS.<br />- Go to the "Plugins" menu in QGIS, and you should see "simple_plugin" as an option.<br />- Click "simple_plugin," and it will open the PHP web application in your default web browser.</div>  <span class='imgPusher' style='float:left;height:0px'></span><span style='display: table;width:auto;position:relative;float:left;max-width:100%;;clear:left;margin-top:0px;*margin-top:0px'><a><img src="https://www.jpsservices.org.uk/uploads/1/2/4/6/12463370/qgis_orig.png" style="margin-top: 10px; margin-bottom: 10px; margin-left: 0px; margin-right: 10px; border-width:0; max-width:100%" alt="Picture" class="galleryImageBorder wsite-image" /></a><span style="display: table-caption; caption-side: bottom; font-size: 90%; margin-top: -10px; margin-bottom: 10px; text-align: center;" class="wsite-caption"></span></span> <div class="paragraph" style="display:block;"></div> <hr style="width:100%;clear:both;visibility:hidden;"></hr>  <div class="paragraph">When you click on the simple_plugin&nbsp; it will open the default browser and display a message as in the example below.</div>  <div><div class="wsite-image wsite-image-border-none " style="padding-top:10px;padding-bottom:10px;margin-left:0px;margin-right:10px;text-align:right"> <a> <img src="https://www.jpsservices.org.uk/uploads/1/2/4/6/12463370/published/web-page1.png?1695854605" alt="Picture" style="width:auto;max-width:100%" /> </a> <div style="display:block;font-size:90%"></div> </div></div>  <div class="paragraph">&#8203;In this blog post, we explored QGIS plugin development and created a simple QGIS plugin that integrates with a PHP web application. While QGIS primarily relies on Python for plugin development, the indirect integration with PHP via QGIS plugins and web applications opens up exciting possibilities for extending QGIS's functionality. Whether you're building web-based GIS applications or simply customizing your QGIS experience, this integration can help you achieve your geospatial goals.</div>]]></content:encoded></item><item><title><![CDATA[Creating Interactive Maps that Respond to User Actions with PHP, JavaScript and Leaflet]]></title><link><![CDATA[https://www.jpsservices.org.uk/blog/creating-interactive-maps-that-respond-to-user-actions-with-php-javascript-and-leaflet]]></link><comments><![CDATA[https://www.jpsservices.org.uk/blog/creating-interactive-maps-that-respond-to-user-actions-with-php-javascript-and-leaflet#comments]]></comments><pubDate>Sun, 24 Sep 2023 15:41:10 GMT</pubDate><category><![CDATA[Uncategorized]]></category><guid isPermaLink="false">https://www.jpsservices.org.uk/blog/creating-interactive-maps-that-respond-to-user-actions-with-php-javascript-and-leaflet</guid><description><![CDATA[Interactive maps are a powerful tool for visualising geographical data and engaging users. Whether you're a beginner or an intermediate GIS (Geographic Information Systems) user, this guide will walk you through the process of creating dynamic, interactive maps that respond to user actions. We'll use a combination of PHP, JavaScript, CSS, HTML, GeoJSON and the Leaflet library to achieve this.Prerequisites:Before we begin creating interactive maps, make sure you have the following tools and knowl [...] ]]></description><content:encoded><![CDATA[<div class="paragraph">Interactive maps are a powerful tool for visualising geographical data and engaging users. Whether you're a beginner or an intermediate <a href="https://en.wikipedia.org/wiki/Geographic_information_system" target="_blank">GIS (Geographic Information Systems)</a> user, this guide will walk you through the process of creating dynamic, interactive maps that respond to user actions. We'll use a combination of <a href="https://en.wikipedia.org/wiki/PHP" target="_blank">PHP,</a> <a href="https://www.w3schools.com/js/DEFAULT.asp" target="_blank">JavaScript</a>, <a href="https://www.w3schools.com/Css/" target="_blank">CSS</a>, <a href="https://www.w3schools.com/html/" target="_blank">HTML</a>, <a href="https://en.wikipedia.org/wiki/GeoJSON" target="_blank">GeoJSON</a> and the <a href="https://leafletjs.com/download.html" target="_blank">Leaflet </a>library to achieve this.<br /><br /><strong>Prerequisites:</strong><br />Before we begin creating interactive maps, make sure you have the following tools and knowledge:<br /><br />1. Basic understanding of HTML, CSS, and JavaScript.<br />2. Familiarity with PHP for server-side scripting.<br />3. A code editor (e.g., <a href="https://code.visualstudio.com/" target="_blank">Visual Studio Code</a>, <a href="https://www.sublimetext.com/" target="_blank">Sublime Text</a>).<br />4. A web server (e.g., <a href="https://www.apachelounge.com/" target="_blank">Apache</a>, <a href="https://nginx.org/en/" target="_blank">Nginx</a>) for serving PHP files.<br /><br /><strong>Setting Up Your Development Environment:</strong><br /><br />1. <strong>Install Leaflet:</strong> Start by downloading the <a href="https://leafletjs.com/download.html" target="_blank">Leaflet library</a> and include it in your HTML file.</div>  <div class="paragraph">2. <strong>Create a New HTML File</strong>: Create an HTML file (e.g., `index.html`) where you'll build your interactive map.<br></div>  <div><div class="wsite-image wsite-image-border-none " style="padding-top:10px;padding-bottom:10px;margin-left:0;margin-right:0;text-align:center"> <a> <img src="https://www.jpsservices.org.uk/uploads/1/2/4/6/12463370/published/index.png?1695571419" alt="Picture" style="width:auto;max-width:100%" /> </a> <div style="display:block;font-size:90%"></div> </div></div>  <div class="paragraph"><strong>Building the Interactive Map:</strong><br /><br />Let's create a simple interactive map with a few features:<br /><br />1. <strong>Setting Up the Map:</strong></div>  <div class="paragraph">&#8203;In your JavaScript file:<br></div>  <div><div class="wsite-image wsite-image-border-none " style="padding-top:10px;padding-bottom:10px;margin-left:0;margin-right:0;text-align:center"> <a> <img src="https://www.jpsservices.org.uk/uploads/1/2/4/6/12463370/published/script.png?1695571763" alt="Picture" style="width:auto;max-width:100%" /> </a> <div style="display:block;font-size:90%"></div> </div></div>  <div><div class="wsite-image wsite-image-border-none " style="padding-top:10px;padding-bottom:10px;margin-left:0;margin-right:0;text-align:center"> <a> <img src="https://www.jpsservices.org.uk/uploads/1/2/4/6/12463370/published/script1.png?1695571801" alt="Picture" style="width:auto;max-width:100%" /> </a> <div style="display:block;font-size:90%"></div> </div></div>  <div class="paragraph">2.<strong> Adding Markers:</strong></div>  <div><div class="wsite-image wsite-image-border-none " style="padding-top:10px;padding-bottom:10px;margin-left:0;margin-right:0;text-align:center"> <a> <img src="https://www.jpsservices.org.uk/uploads/1/2/4/6/12463370/published/styling.png?1695571935" alt="Picture" style="width:auto;max-width:100%" /> </a> <div style="display:block;font-size:90%"></div> </div></div>  <div class="paragraph">3. <strong>Adding PHP Data:</strong></div>  <div class="paragraph">You can use PHP to make your map dynamic by fetching and displaying data from a server-side source. For example, you could use PHP to retrieve data from a database and display it as markers on the map.<br></div>  <div><div class="wsite-image wsite-image-border-none " style="padding-top:10px;padding-bottom:10px;margin-left:0;margin-right:0;text-align:center"> <a> <img src="https://www.jpsservices.org.uk/uploads/1/2/4/6/12463370/published/php.png?1695572135" alt="Picture" style="width:auto;max-width:100%" /> </a> <div style="display:block;font-size:90%"></div> </div></div>  <div class="paragraph">4. <strong>Adding GeoJSON Data:</strong></div>  <div><div class="wsite-image wsite-image-border-none " style="padding-top:10px;padding-bottom:10px;margin-left:0;margin-right:0;text-align:center"> <a> <img src="https://www.jpsservices.org.uk/uploads/1/2/4/6/12463370/published/geojson.png?1695572210" alt="Picture" style="width:auto;max-width:100%" /> </a> <div style="display:block;font-size:90%"></div> </div></div>  <div class="paragraph"><strong>Interactive Map Example</strong></div>  <div><div class="wsite-image wsite-image-border-none " style="padding-top:10px;padding-bottom:10px;margin-left:0;margin-right:0;text-align:center"> <a> <img src="https://www.jpsservices.org.uk/uploads/1/2/4/6/12463370/published/map.png?1695572350" alt="Picture" style="width:auto;max-width:100%" /> </a> <div style="display:block;font-size:90%"></div> </div></div>  <div class="paragraph">&#8203;Creating interactive maps that respond to user actions can be a rewarding experience for GIS enthusiasts. By combining PHP, JavaScript, CSS, HTML, and the Leaflet library, you can build powerful maps that engage your audience. This guide should serve as a starting point for both beginners and intermediate users of GIS. Explore further, experiment, and create maps that convey meaningful information and provide valuable user experiences.</div>]]></content:encoded></item><item><title><![CDATA[Harnessing the Power of PHP in GIS: Mastering Forms and User Input Security]]></title><link><![CDATA[https://www.jpsservices.org.uk/blog/harnessing-the-power-of-php-in-gis-mastering-forms-and-user-input-security]]></link><comments><![CDATA[https://www.jpsservices.org.uk/blog/harnessing-the-power-of-php-in-gis-mastering-forms-and-user-input-security#comments]]></comments><pubDate>Fri, 22 Sep 2023 15:38:19 GMT</pubDate><category><![CDATA[Uncategorized]]></category><guid isPermaLink="false">https://www.jpsservices.org.uk/blog/harnessing-the-power-of-php-in-gis-mastering-forms-and-user-input-security</guid><description><![CDATA[Geographic Information Systems (GIS) have become an indispensable tool for professionals in various fields, from urban planning to environmental management. PHP, a versatile server-side scripting language, can be a valuable asset in building GIS applications. In this blog post, we'll explore the critical aspect of working with forms and user input in a GIS environment, focusing on the importance of validating and sanitizing user input for security. This guide is tailored for intermediate GIS use [...] ]]></description><content:encoded><![CDATA[<div class="paragraph"><a href="https://en.wikipedia.org/wiki/Geographic_information_system" target="_blank">Geographic Information Systems (GIS)</a> have become an indispensable tool for professionals in various fields, from urban planning to environmental management. <a href="https://www.php.net/" target="_blank">PHP</a>, a versatile server-side scripting language, can be a valuable asset in building GIS applications. In this blog post, we'll explore the critical aspect of working with forms and user input in a GIS environment, focusing on the importance of validating and sanitizing user input for security. This guide is tailored for intermediate GIS users looking to enhance their PHP skills in this context.</div>  <div class="paragraph">Forms play a pivotal role in GIS applications, allowing users to input data, perform queries, and interact with maps. Whether you're creating a web-based GIS system or adding functionality to an existing one, PHP can help streamline the process of handling user input.<br></div>  <div class="paragraph"><strong>Form Validation: Ensuring Data Integrity</strong><br />One of the primary responsibilities of a GIS application is to maintain data integrity. PHP's validation capabilities are invaluable in ensuring that users submit accurate and complete data. Here are some key considerations:<br /><br /><strong>Client-side vs. Server-side Validation</strong>: While client-side validation can provide a smoother user experience, it's crucial to rely on server-side validation as the primary defence. Client-side validation can be bypassed, making server-side validation essential for security.<br /><br /><strong>Data Type and Format Validation</strong>: Ensure that user input adheres to the expected data types and formats. For example, validate that latitude and longitude values are in the correct numerical format.<br /><br /><strong>Range and Boundary Checks</strong>: Implement checks to ensure that input values fall within specified ranges. For instance, you can validate that a user-submitted coordinate lies within the geographic bounds of your map.</div>  <div class="paragraph"><strong>Input Sanitization: Guarding Against Security Threats</strong><br />Beyond data integrity, security is a paramount concern when dealing with user input. Unsanitised user input can expose your GIS application to various vulnerabilities, including SQL injection and cross-site scripting (XSS) attacks. PHP offers several functions and techniques to mitigate these risks:<br /><br />Escape User Input: Use functions like&nbsp; <em>mysqli_real_escape_string</em> or prepared statements when interacting with a database. This prevents malicious SQL injection attempts.<br /><br /><strong>HTML Entity Encoding</strong>: When displaying user input on web pages, encode it using <em>htmlspecialchars</em> to prevent XSS attacks. This ensures that any potential HTML or JavaScript within the input is treated as plain text.<br /><br /><strong>File Upload Security</strong>: If your GIS application allows file uploads, enforce strict controls, such as limiting file types and performing server-side validation to check the uploaded files' integrity.<br /><br /><strong>Regular Expressions</strong>: Employ regular expressions to validate and sanitize complex input, such as email addresses or URLs.<br /><br /><strong>Best Practices for GIS Developers</strong><br /><br />Here are some best practices for GIS developers working with PHP and user input:</div>  <div class="paragraph">1. <strong>Modular Code</strong>: Break your code into modular functions or classes to handle different aspects of form processing, validation, and sanitization. This promotes code reusability and maintainability.<br /><br />2. <strong>Error Handling</strong>: Implement robust error handling mechanisms to gracefully handle validation errors and provide meaningful feedback to users.<br /><br />3. <strong>Logging</strong>: Maintain comprehensive logs of user input, especially when dealing with sensitive data or potentially malicious input. This can assist in troubleshooting and security audits.<br /><br />4.&nbsp;<strong>Regular Updates</strong>: Keep your PHP version and libraries up to date to benefit from the latest security patches and enhancements.</div>  <div class="paragraph">&#8203;PHP can be a powerful ally for GIS developers when it comes to handling forms and user input. By mastering form validation and input sanitization techniques, you can not only ensure data integrity but also fortify your GIS application against security threats. Remember that security is an ongoing process, so stay vigilant and continuously update your knowledge to protect your GIS environment effectively.</div>  <div class="paragraph">In previous blog posts, we discussed the integration of PHP and <a href="https://www.w3schools.com/js/DEFAULT.asp" target="_blank">JavaScript</a> to create a Geographic Information System (GIS) form for entering latitude and longitude coordinates and displaying them on a map. Now, let's take it a step further by adding <a href="https://www.w3schools.com/Css/" target="_blank">CSS</a> (Cascading Style Sheets) to enhance the visual appeal and layout of our GIS form and map.<br /><br /><strong>Code Example: Enhancing the GIS Form and Map</strong><br /><br />In this section, we'll provide you with a code example that demonstrates how to enhance your GIS form and map with CSS styling.<br /><br /><strong>HTML Structure</strong></div>  <div><div class="wsite-image wsite-image-border-none " style="padding-top:10px;padding-bottom:10px;margin-left:0;margin-right:0;text-align:center"> <a> <img src="https://www.jpsservices.org.uk/uploads/1/2/4/6/12463370/published/html.png?1695398766" alt="Picture" style="width:auto;max-width:100%" /> </a> <div style="display:block;font-size:90%"></div> </div></div>  <div class="paragraph"><strong>CSS Styling</strong></div>  <div><div class="wsite-image wsite-image-border-none " style="padding-top:10px;padding-bottom:10px;margin-left:0;margin-right:0;text-align:center"> <a> <img src="https://www.jpsservices.org.uk/uploads/1/2/4/6/12463370/published/css.png?1695399701" alt="Picture" style="width:auto;max-width:100%" /> </a> <div style="display:block;font-size:90%"></div> </div></div>  <div class="paragraph">With these CSS enhancements, our GIS form now looks polished and professional, offering an improved user experience. Users will find it easier to input latitude and longitude coordinates, and the submit button is visually appealing.<br /></div>  <div><div class="wsite-image wsite-image-border-none " style="padding-top:10px;padding-bottom:10px;margin-left:0;margin-right:0;text-align:center"> <a> <img src="https://www.jpsservices.org.uk/uploads/1/2/4/6/12463370/published/map-prior-to-input.png?1695399787" alt="Picture" style="width:auto;max-width:100%" /> </a> <div style="display:block;font-size:90%"></div> </div></div>  <div class="paragraph"><span>The map, situated below the form, maintains a clear separation between the two elements and provides a visual representation of the entered coordinates. When valid coordinates are submitted, the map updates to display the location accurately.</span><br /></div>  <div><div class="wsite-image wsite-image-border-none " style="padding-top:10px;padding-bottom:10px;margin-left:0;margin-right:0;text-align:center"> <a> <img src="https://www.jpsservices.org.uk/uploads/1/2/4/6/12463370/published/after-input.png?1695399857" alt="Picture" style="width:auto;max-width:100%" /> </a> <div style="display:block;font-size:90%"></div> </div></div>  <div class="paragraph"><span>Incorporating CSS into your GIS application not only improves aesthetics but also contributes to a user-friendly interface, making it more accessible and engaging</span></div>]]></content:encoded></item></channel></rss>