Thursday, 29 November 2018

QGIS Python script for creating project file


Is there a way to create QGIS project file(.qgs) using only Python script outside QGIS Python console. I am trying to publish a map using QGIS Web Client using python.


For this, I am trying to do below



  1. Create .qgs file dynamically

  2. Add Legend and Layers to the .qgs file and save

  3. Set WFS,WCS parameters in the .qgs file


Finally use this file to view QGIS web client.



I tried to tweak the tool available at https://github.com/oware/Mxd2Qgs. I am successful to certain extent, i.e. creating a .qgs file. But I need some inputs on Getting layer (vector/raster) properties when path for the files is given.



# Import system modules
from xml.dom.minidom import Document
import string
import os
import glob


#Read input parameters from GP dialog

output = "myworld.qgs"

#Create an output qgs file
f = open(output, "w")

# Create the minidom
doc = Document()

# Create the base element
qgis = doc.createElement("qgis")

qgis.setAttribute("projectname", " ")
qgis.setAttribute("version", "2.4.0-Chugiak")
doc.appendChild(qgis)

# Create the element<br/>title = doc.createElement("title")<br/>qgis.appendChild(title)<br/><br/><br/>unit = doc.createTextNode("degrees")<br/><br/>xmin1 = doc.createTextNode(str("-180"))<br/>ymin1 = doc.createTextNode(str("-90"))<br/>xmax1 = doc.createTextNode(str("180"))<br/>ymax1 = doc.createTextNode(str("90"))<br/>proj4id = doc.createTextNode(str("+proj=longlat +datum=WGS84 +no_defs"))<br/>srid1 = doc.createTextNode(str("4326"))<br/>srid2 = doc.createTextNode(str("3452"))<br/>epsg1 = doc.createTextNode(str("4326"))<br/>epsg2 = doc.createTextNode(str("4326"))<br/>description1 = doc.createTextNode(str("WGS 84"))<br/><br/>description2 = doc.createTextNode(str("WGS 84"))<br/>ellipsoidacronym1 = doc.createTextNode(str("WGS84"))<br/>ellipsoidacronym2 = doc.createTextNode(str("WGS84"))<br/>geographicflag1 = doc.createTextNode("true")<br/>geographicflag2 = doc.createTextNode("true")<br/>pa=doc.createTextNode("longlat")<br/>authid2 = doc.createTextNode("EPSG:"+str("4326"))<br/>authid3 = doc.createTextNode("EPSG:"+str("4326"))<br/>count2=0<br/># mapcanvas<br/><br/>def map_canvas():<br/> # Create the <mapcanvas> element<br/> mapcanvas = doc.createElement("mapcanvas")<br/> qgis.appendChild(mapcanvas)<br/><br/># Create the <units> element<br/>units = doc.createElement("units")<br/>units.appendChild(unit)<br/>mapcanvas.appendChild(units)<br/><br/><br/># Create the <extent> element<br/>extent = doc.createElement("extent")<br/>mapcanvas.appendChild(extent)<br/><br/># Create the <xmin> element<br/>xmin = doc.createElement("xmin")<br/>xmin.appendChild(xmin1)<br/>extent.appendChild(xmin)<br/><br/># Create the <ymin> element<br/><br/>ymin = doc.createElement("ymin")<br/>ymin.appendChild(ymin1)<br/>extent.appendChild(ymin)<br/><br/># Create the <xmax> element<br/>xmax = doc.createElement("xmax")<br/>xmax.appendChild(xmax1)<br/>extent.appendChild(xmax)<br/><br/># Create the <ymax> element<br/><br/>ymax = doc.createElement("ymax")<br/>ymax.appendChild(ymax1)<br/>extent.appendChild(ymax)<br/><br/># Create the <projections> element<br/>projections = doc.createElement("projections")<br/>mapcanvas.appendChild(projections)<br/><br/># Create the <destinationsrs> element<br/>destinationsrs = doc.createElement("destinationsrs")<br/><br/>mapcanvas.appendChild(destinationsrs)<br/><br/># Create the <spatialrefsys> element<br/>spatialrefsys = doc.createElement("spatialrefsys")<br/>destinationsrs.appendChild(spatialrefsys)<br/><br/># Create the <proj4> element<br/>proj4 = doc.createElement("proj4")<br/>proj4.appendChild(proj4id)<br/>spatialrefsys.appendChild(proj4)<br/><br/><br/># Create the <srsid> element<br/>srsid = doc.createElement("srsid")<br/>srsid.appendChild(srid2)<br/>spatialrefsys.appendChild(srsid)<br/><br/># Create the <srid> element<br/>srid = doc.createElement("srid")<br/>srid.appendChild(srid1)<br/>spatialrefsys.appendChild(srid)<br/><br/><br/># Create the <authid> element<br/>authid = doc.createElement("authid")<br/>authid.appendChild(authid2)<br/>spatialrefsys.appendChild(authid)<br/><br/># Create the <description> element<br/>description = doc.createElement("description")<br/>description.appendChild(description1)<br/>spatialrefsys.appendChild(description)<br/><br/><br/># Create the <projectionacronym> element<br/>projectionacronym = doc.createElement("projectionacronym")<br/>spatialrefsys.appendChild(projectionacronym)<br/>projectionacronym.appendChild(pa)<br/><br/># Create the <ellipsoidacronym element<br/>ellipsoidacronym = doc.createElement("ellipsoidacronym")<br/>ellipsoidacronym.appendChild(ellipsoidacronym1)<br/>spatialrefsys.appendChild(ellipsoidacronym)<br/><br/><br/># Create the <geographicflag> element<br/>geographicflag = doc.createElement("geographicflag")<br/>geographicflag.appendChild(geographicflag1)<br/>spatialrefsys.appendChild(geographicflag)<br/><br/><br/><br/># Legend<br/># Legend<br/><br/>def legend_func():<br/> global count2<br/> # Create the <legend> element<br/> legend = doc.createElement("legend")<br/> qgis.appendChild(legend)<br/><br/><br/>for lyr in os.listdir(r"C:\Build\xyz\shapefiles"):<br/> if lyr.endswith('.shp'):<br/> count2=count2+1 <br/><br/> print lyr<br/> print "\n"<br/> # Create the <legendlayer> element<br/> legendlayer = doc.createElement("legendlayer")<br/> legendlayer.setAttribute("open", "true")<br/> legendlayer.setAttribute("checked", "Qt::Checked")<br/> legendlayer.setAttribute("name",lyr)<br/><br/> legend.appendChild(legendlayer)<br/><br/><br/> # Create the <filegroup> element<br/> filegroup = doc.createElement("filegroup")<br/> filegroup.setAttribute("open", "true")<br/> filegroup.setAttribute("hidden", "false")<br/> legendlayer.appendChild(filegroup)<br/><br/> # Create the <legendlayerfile> element<br/> legendlayerfile = doc.createElement("legendlayerfile")<br/> legendlayerfile.setAttribute("isInOverview", "0")<br/> legendlayerfile.setAttribute("layerid", lyr+str(20110427170816078))<br/><br/> legendlayerfile.setAttribute("visible", "1")<br/> filegroup.appendChild(legendlayerfile)<br/><br/><br/># Project Layers<br/>def project_layers(): <br/> # Create the <projectlayers> element<br/> projectlayers = doc.createElement("projectlayers")<br/> count1=str(count2)<br/> projectlayers.setAttribute("layercount", count1)<br/><br/> qgis.appendChild(projectlayers)<br/><br/>for lyr in os.listdir(r"C:\Build\xyz\shapefiles"):<br/><br/> if lyr.endswith('.shp'):<br/><br/> print lyr<br/> print "\n"<br/> ds = doc.createTextNode(str(r"C:\Build\xyz\shapefiles"+"\\"+lyr))<br/> #Tool fails here as there is dependency on ArcGIS<br/><br/> #Is there a way to replace below 2 lines ,with equivalents from QGIS?<br/> geometry1 = arcpy.Describe(lyr)<br/> geometry2 = str(geometry1.shapeType)<br/><br/> name1 = doc.createTextNode(lyr+str(20110427170816078))<br/> name2 = doc.createTextNode(lyr)<br/><br/> # Create the <maplayer> element<br/> maplayer = doc.createElement("maplayer")<br/> maplayer.setAttribute("minimumScale", "0")<br/><br/> maplayer.setAttribute("maximumScale", "1e+08")<br/> maplayer.setAttribute("minLabelScale", "0")<br/> maplayer.setAttribute("maxLabelScale", "1e+08")<br/> maplayer.setAttribute("geometry", geometry2)<br/> maplayer.setAttribute("type", "vector")<br/> maplayer.setAttribute("hasScaleBasedVisibilityFlag", "0")<br/> maplayer.setAttribute("scaleBasedLabelVisibilityFlag", "0")<br/> projectlayers.appendChild(maplayer)<br/><br/> # Create the <id> element<br/><br/> id = doc.createElement("id")<br/> id.appendChild(name1)<br/> maplayer.appendChild(id)<br/><br/> # Create the <datasource> element<br/> datasource = doc.createElement("datasource")<br/> datasource.appendChild(ds)<br/> maplayer.appendChild(datasource)<br/><br/> # Create the <layername> element<br/><br/> layername = doc.createElement("layername")<br/> layername.appendChild(name2)<br/> maplayer.appendChild(layername)<br/><br/> # Create the <srs> element<br/> srs = doc.createElement("srs")<br/> maplayer.appendChild(srs)<br/><br/> # Create the <spatialrefsys> element<br/> spatialrefsys = doc.createElement("spatialrefsys")<br/><br/> srs.appendChild(spatialrefsys)<br/><br/> # Create the <proj4> element<br/> proj4 = doc.createElement("proj4")<br/> spatialrefsys.appendChild(proj4)<br/><br/> # Create the <srsid> element<br/> srsid = doc.createElement("srsid")<br/> spatialrefsys.appendChild(srsid)<br/><br/><br/> # Create the <srid> element<br/> srid = doc.createElement("srid")<br/> srid.appendChild(srid2)<br/> spatialrefsys.appendChild(srid)<br/><br/><br/> # Create the <authid> element<br/> authid = doc.createElement("authid")<br/> authid.appendChild(authid3)<br/> spatialrefsys.appendChild(authid)<br/><br/><br/><br/> # Create the <description> element<br/> description = doc.createElement("description")<br/> description.appendChild(description2)<br/> spatialrefsys.appendChild(description)<br/><br/><br/> # Create the <projectionacronym> element<br/> projectionacronym = doc.createElement("projectionacronym")<br/><br/> spatialrefsys.appendChild(projectionacronym)<br/><br/> # Create the <ellipsoidacronym element<br/> ellipsoidacronym = doc.createElement("ellipsoidacronym")<br/> ellipsoidacronym.appendChild(ellipsoidacronym2)<br/> spatialrefsys.appendChild(ellipsoidacronym)<br/><br/><br/> # Create the <geographicflag> element<br/> geographicflag = doc.createElement("geographicflag")<br/><br/> geographicflag.appendChild(geographicflag2)<br/> spatialrefsys.appendChild(geographicflag)<br/><br/> # Create the <transparencyLevelInt> element<br/> transparencyLevelInt = doc.createElement("transparencyLevelInt")<br/> transparency2 = doc.createTextNode("255")<br/> transparencyLevelInt.appendChild(transparency2)<br/> maplayer.appendChild(transparencyLevelInt)<br/><br/> # Create the <customproperties> element<br/><br/> customproperties = doc.createElement("customproperties")<br/> maplayer.appendChild(customproperties)<br/><br/> # Create the <provider> element<br/> provider = doc.createElement("provider")<br/> provider.setAttribute("encoding", "System")<br/> ogr = doc.createTextNode("ogr")<br/> provider.appendChild(ogr)<br/> maplayer.appendChild(provider)<br/><br/><br/> # Create the <singlesymbol> element<br/> singlesymbol = doc.createElement("singlesymbol")<br/> maplayer.appendChild(singlesymbol)<br/><br/> # Create the <symbol> element<br/> symbol = doc.createElement("symbol")<br/> singlesymbol.appendChild(symbol)<br/><br/> # Create the <lowervalue> element<br/> lowervalue = doc.createElement("lowervalue")<br/><br/> symbol.appendChild(lowervalue)<br/><br/> # Create the <uppervalue> element<br/> uppervalue = doc.createElement("uppervalue")<br/> symbol.appendChild(uppervalue)<br/><br/> # Create the <label> element<br/> label = doc.createElement("label")<br/> symbol.appendChild(label)<br/><br/><br/> # Create the <rotationclassificationfieldname> element<br/> rotationclassificationfieldname = doc.createElement("rotationclassificationfieldname")<br/> symbol.appendChild(rotationclassificationfieldname)<br/><br/> # Create the <scaleclassificationfieldname> element<br/> scaleclassificationfieldname = doc.createElement("scaleclassificationfieldname")<br/> symbol.appendChild(scaleclassificationfieldname)<br/><br/> # Create the <symbolfieldname> element<br/> symbolfieldname = doc.createElement("symbolfieldname")<br/><br/> symbol.appendChild(symbolfieldname)<br/><br/> # Create the <outlinecolor> element<br/> outlinecolor = doc.createElement("outlinecolor")<br/> outlinecolor.setAttribute("red", "88")<br/> outlinecolor.setAttribute("blue", "99")<br/> outlinecolor.setAttribute("green", "37")<br/> symbol.appendChild(outlinecolor)<br/><br/> # Create the <outlinestyle> element<br/><br/> outlinestyle = doc.createElement("outlinestyle")<br/> outline = doc.createTextNode("SolidLine")<br/> outlinestyle.appendChild(outline)<br/> symbol.appendChild(outlinestyle)<br/><br/> # Create the <outlinewidth> element<br/> outlinewidth = doc.createElement("outlinewidth")<br/> width = doc.createTextNode("0.26")<br/> outlinewidth.appendChild(width)<br/> symbol.appendChild(outlinewidth)<br/><br/><br/> # Create the <fillcolor> element<br/> fillcolor = doc.createElement("fillcolor")<br/> fillcolor.setAttribute("red", "90")<br/> fillcolor.setAttribute("blue", "210")<br/> fillcolor.setAttribute("green", "229")<br/> symbol.appendChild(fillcolor)<br/><br/> # Create the <fillpattern> element<br/> fillpattern = doc.createElement("fillpattern")<br/><br/> fill = doc.createTextNode("SolidPattern")<br/> fillpattern.appendChild(fill)<br/> symbol.appendChild(fillpattern)<br/><br/> # Create the <texturepath> element<br/> texturepath = doc.createElement("texturepath")<br/> texturepath.setAttribute("null", "1")<br/> symbol.appendChild(texturepath)<br/><br/><br/><br/><br/>map_canvas()<br/>legend_func()<br/>project_layers()<br/><br/><br/># Write to qgis file<br/><br/>try:<br/> f.write(doc.toprettyxml())<br/><br/>finally:<br/> f.close()<br/><br/>print 'Done'<br/></code></pre></div><br/><div class="post-text" itemprop="text"> <div style="font-weight: bold;"><p class="normal">Answer</p> <br/></div><br/><p>Struggled a bit for last 2 days. Abandoned XML approach. Able to accomplish first 2 tasks.</p><br/><p>Need to check how I can accomplish setting WFS,WCS parameters</p><br/><ol><br/><li>Create <code>.qgs</code> file dynamically</li><br/><li>Add Legend and Layers to the <code>.qgs</code> file and save</li><br/><br/><li>Set WFS,WCS parameters in the <code>.qgs</code> file</li><br/></ol><br/><br/><pre><code>from xml.dom.minidom import Document<br/>import string<br/>import os<br/>import sys<br/>from qgis.core import *<br/>from qgis.gui import *<br/>from PyQt4.QtCore import *<br/><br/>from PyQt4.QtGui import QApplication<br/>from PyQt4.QtXml import *<br/><br/><br/>#Read input parameters from GP dialog<br/>strProjetName = "C:/OSGeo4W/apache/htdocs/QGIS-Web-Client-master/projects/myworld.qgs"<br/><br/> if os.path.isfile(strProjetName):<br/> os.remove(strProjetName)<br/><br/><br/> def add_Layers():<br/> QGISAPP = QgsApplication(sys.argv, True) <br/> QgsApplication.setPrefixPath(r"C:\OSGeo4W\apps\qgis", True)<br/> QgsApplication.initQgis() <br/> QgsProject.instance().setFileName(strProjetName)<br/> print QgsProject.instance().fileName()<br/><br/><br/>for file1 in os.listdir(r"C:\myprojects\world"):<br/> if file1.endswith('.shp'):<br/><br/> layer = QgsVectorLayer(r"C:\myprojects\world"+r"\\"+file1, file1, "ogr")<br/> print file1<br/> print layer.isValid()<br/> # Add layer to the registry<br/> QgsMapLayerRegistry.instance().addMapLayer(layer)<br/><br/><br/>QgsProject.instance().write()<br/>QgsApplication.exitQgis()<br/><br/><br/>add_Layers()<br/></code></pre></div> <div style='clear: both;'></div> </div> <div class='post-footer'> <div class='post-footer-line post-footer-line-1'> <span class='post-author vcard'> </span> <span class='post-timestamp'> - <meta content='https://gisqas.blogspot.com/2018/11/qgis-python-script-for-creating-project.html' itemprop='url'/> <a class='timestamp-link' href='https://gisqas.blogspot.com/2018/11/qgis-python-script-for-creating-project.html' rel='bookmark' title='permanent link'><abbr class='published' itemprop='datePublished' title='2018-11-29T17:45:00-08:00'>November 29, 2018</abbr></a> </span> <span class='post-comment-link'> </span> <span class='post-icons'> <span class='item-control blog-admin pid-1033420059'> <a href='https://www.blogger.com/post-edit.g?blogID=6220276627345324806&postID=7733141262871347704&from=pencil' title='Edit Post'> <img alt='' class='icon-action' height='18' src='https://resources.blogblog.com/img/icon18_edit_allbkg.gif' width='18'/> </a> </span> </span> <div class='post-share-buttons goog-inline-block'> <a class='goog-inline-block share-button sb-email' href='https://www.blogger.com/share-post.g?blogID=6220276627345324806&postID=7733141262871347704&target=email' target='_blank' title='Email This'><span class='share-button-link-text'>Email This</span></a><a class='goog-inline-block share-button sb-blog' href='https://www.blogger.com/share-post.g?blogID=6220276627345324806&postID=7733141262871347704&target=blog' onclick='window.open(this.href, "_blank", "height=270,width=475"); return false;' target='_blank' title='BlogThis!'><span class='share-button-link-text'>BlogThis!</span></a><a class='goog-inline-block share-button sb-twitter' href='https://www.blogger.com/share-post.g?blogID=6220276627345324806&postID=7733141262871347704&target=twitter' target='_blank' title='Share to X'><span class='share-button-link-text'>Share to X</span></a><a class='goog-inline-block share-button sb-facebook' href='https://www.blogger.com/share-post.g?blogID=6220276627345324806&postID=7733141262871347704&target=facebook' onclick='window.open(this.href, "_blank", "height=430,width=640"); return false;' target='_blank' title='Share to Facebook'><span class='share-button-link-text'>Share to Facebook</span></a><a class='goog-inline-block share-button sb-pinterest' href='https://www.blogger.com/share-post.g?blogID=6220276627345324806&postID=7733141262871347704&target=pinterest' target='_blank' title='Share to Pinterest'><span class='share-button-link-text'>Share to Pinterest</span></a> </div> </div> <div class='post-footer-line post-footer-line-2'> <span class='post-labels'> </span> </div> <div class='post-footer-line post-footer-line-3'> <span class='post-location'> </span> </div> </div> </div> <div class='comments' id='comments'> <a name='comments'></a> <h4>No comments:</h4> <div id='Blog1_comments-block-wrapper'> <dl class='avatar-comment-indent' id='comments-block'> </dl> </div> <p class='comment-footer'> <div class='comment-form'> <a name='comment-form'></a> <h4 id='comment-post-message'>Post a Comment</h4> <p> </p> <a href='https://www.blogger.com/comment/frame/6220276627345324806?po=7733141262871347704&hl=en-GB' id='comment-editor-src'></a> <iframe allowtransparency='true' class='blogger-iframe-colorize blogger-comment-from-post' frameborder='0' height='410px' id='comment-editor' name='comment-editor' src='' width='100%'></iframe> <script src='https://www.blogger.com/static/v1/jsbin/2315299244-comment_from_post_iframe.js' type='text/javascript'></script> <script type='text/javascript'> BLOG_CMT_createIframe('https://www.blogger.com/rpc_relay.html'); </script> </div> </p> </div> </div> </div></div> </div> <div class='blog-pager' id='blog-pager'> <span id='blog-pager-newer-link'> <a class='blog-pager-newer-link' href='https://gisqas.blogspot.com/2018/11/arcmap-creating-relationship-database.html' id='Blog1_blog-pager-newer-link' title='Newer Post'>Newer Post</a> </span> <span id='blog-pager-older-link'> <a class='blog-pager-older-link' href='https://gisqas.blogspot.com/2018/11/arcgis-10-geotiff-export.html' id='Blog1_blog-pager-older-link' title='Older Post'>Older Post</a> </span> <a class='home-link' href='https://gisqas.blogspot.com/'>Home</a> </div> <div class='clear'></div> <div class='post-feeds'> <div class='feed-links'> Subscribe to: <a class='feed-link' href='https://gisqas.blogspot.com/feeds/7733141262871347704/comments/default' target='_blank' type='application/atom+xml'>Post Comments (Atom)</a> </div> </div> </div><div class='widget FeaturedPost' data-version='1' id='FeaturedPost1'> <div class='post-summary'> <h3><a href='https://gisqas.blogspot.com/2020/02/arcpy-changing-output-name-when.html'>arcpy - Changing output name when exporting data driven pages to JPG?</a></h3> <p> Is there a way to save the output JPG, changing the output file name to the page name, instead of page number? I mean changing the script fo... </p> </div> <style type='text/css'> .image { width: 100%; } </style> <div class='clear'></div> </div><div class='widget PopularPosts' data-version='1' id='PopularPosts1'> <div class='widget-content popular-posts'> <ul> <li> <div class='item-content'> <div class='item-title'><a href='https://gisqas.blogspot.com/2016/10/arcpy-assigning-keyboard-key-to-python.html'>arcpy - Assigning keyboard key to Python script in ArcMap?</a></div> <div class='item-snippet'>I have a python script and I use it through my toolbox but I use it many times in a day. Is it possible to assign a keyboard shortcut to my ...</div> </div> <div style='clear: both;'></div> </li> <li> <div class='item-content'> <div class='item-thumbnail'> <a href='https://gisqas.blogspot.com/2018/07/highlighting-area-in-google-maps-on.html' target='_blank'> <img alt='' border='0' src='https://lh3.googleusercontent.com/blogger_img_proxy/AEn0k_t1nZ4qXMzcdPw11UVNheU1ShLiACd7KFMaD8E2Ppq8ZnJ5LJjk0eMp_HbJPyPRfxRAqrb8F7LNdRkNr06XV8tLkJ0N1K74=w72-h72-p-k-no-nu'/> </a> </div> <div class='item-title'><a href='https://gisqas.blogspot.com/2018/07/highlighting-area-in-google-maps-on.html'>Highlighting area in Google Maps on mouse hover</a></div> <div class='item-snippet'>I want to implement a feature in my app (gmap powered) to highlight the area on mouse over. Much like the functionality in wikimapia. Check ...</div> </div> <div style='clear: both;'></div> </li> <li> <div class='item-content'> <div class='item-title'><a href='https://gisqas.blogspot.com/2017/11/layer-stacking-rasters-in-qgis.html'>Layer stacking rasters in QGIS?</a></div> <div class='item-snippet'>I have some multi-spectral data, where the individual bands are separate Raster files. How do I layer stack these rasters so that I get one ...</div> </div> <div style='clear: both;'></div> </li> </ul> <div class='clear'></div> </div> </div></div> </div> </div> <div class='column-left-outer'> <div class='column-left-inner'> <aside> </aside> </div> </div> <div class='column-right-outer'> <div class='column-right-inner'> <aside> <div class='sidebar section' id='sidebar-right-1'><div class='widget BlogSearch' data-version='1' id='BlogSearch1'> <h2 class='title'>Search This Blog</h2> <div class='widget-content'> <div id='BlogSearch1_form'> <form action='https://gisqas.blogspot.com/search' class='gsc-search-box' target='_top'> <table cellpadding='0' cellspacing='0' class='gsc-search-box'> <tbody> <tr> <td class='gsc-input'> <input autocomplete='off' class='gsc-input' name='q' size='10' title='search' type='text' value=''/> </td> <td class='gsc-search-button'> <input class='gsc-search-button' title='search' type='submit' value='Search'/> </td> </tr> </tbody> </table> </form> </div> </div> <div class='clear'></div> </div><div class='widget BlogArchive' data-version='1' id='BlogArchive1'> <h2>Blog Archive</h2> <div class='widget-content'> <div id='ArchiveList'> <div id='BlogArchive1_ArchiveList'> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='https://gisqas.blogspot.com/2020/'> 2020 </a> <span class='post-count' dir='ltr'>(295)</span> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='https://gisqas.blogspot.com/2020/02/'> February 2020 </a> <span class='post-count' dir='ltr'>(93)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='https://gisqas.blogspot.com/2020/01/'> January 2020 </a> <span class='post-count' dir='ltr'>(202)</span> </li> </ul> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='https://gisqas.blogspot.com/2019/'> 2019 </a> <span class='post-count' dir='ltr'>(2514)</span> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='https://gisqas.blogspot.com/2019/12/'> December 2019 </a> <span class='post-count' dir='ltr'>(226)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='https://gisqas.blogspot.com/2019/11/'> November 2019 </a> <span class='post-count' dir='ltr'>(227)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='https://gisqas.blogspot.com/2019/10/'> October 2019 </a> <span class='post-count' dir='ltr'>(203)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='https://gisqas.blogspot.com/2019/09/'> September 2019 </a> <span class='post-count' dir='ltr'>(185)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='https://gisqas.blogspot.com/2019/08/'> August 2019 </a> <span class='post-count' dir='ltr'>(231)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='https://gisqas.blogspot.com/2019/07/'> July 2019 </a> <span class='post-count' dir='ltr'>(222)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='https://gisqas.blogspot.com/2019/06/'> June 2019 </a> <span class='post-count' dir='ltr'>(220)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='https://gisqas.blogspot.com/2019/05/'> May 2019 </a> <span class='post-count' dir='ltr'>(234)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='https://gisqas.blogspot.com/2019/04/'> April 2019 </a> <span class='post-count' dir='ltr'>(171)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='https://gisqas.blogspot.com/2019/03/'> March 2019 </a> <span class='post-count' dir='ltr'>(222)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='https://gisqas.blogspot.com/2019/02/'> February 2019 </a> <span class='post-count' dir='ltr'>(184)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='https://gisqas.blogspot.com/2019/01/'> January 2019 </a> <span class='post-count' dir='ltr'>(189)</span> </li> </ul> </li> </ul> <ul class='hierarchy'> <li class='archivedate expanded'> <a class='toggle' href='javascript:void(0)'> <span class='zippy toggle-open'> ▼  </span> </a> <a class='post-count-link' href='https://gisqas.blogspot.com/2018/'> 2018 </a> <span class='post-count' dir='ltr'>(2470)</span> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='https://gisqas.blogspot.com/2018/12/'> December 2018 </a> <span class='post-count' dir='ltr'>(222)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate expanded'> <a class='toggle' href='javascript:void(0)'> <span class='zippy toggle-open'> ▼  </span> </a> <a class='post-count-link' href='https://gisqas.blogspot.com/2018/11/'> November 2018 </a> <span class='post-count' dir='ltr'>(206)</span> <ul class='posts'> <li><a href='https://gisqas.blogspot.com/2018/11/python-arcpy-remove-invalid-character.html'>python - Arcpy remove invalid character</a></li> <li><a href='https://gisqas.blogspot.com/2018/11/exporting-feature-geojson-from-postgis.html'>Exporting Feature GeoJSON from PostGIS?</a></li> <li><a href='https://gisqas.blogspot.com/2018/11/qgis-how-does-zonal-statistics-work.html'>qgis - How does Zonal Statistics work exactly?</a></li> <li><a href='https://gisqas.blogspot.com/2018/11/python-clipping-vs-intersecting.html'>python - Clipping vs Intersecting</a></li> <li><a href='https://gisqas.blogspot.com/2018/11/qgis-layer-with-custom-ui-not-working.html'>qgis - Layer with custom UI not working properly</a></li> <li><a href='https://gisqas.blogspot.com/2018/11/arcmap-counting-raster-values-in-each.html'>arcmap - Counting raster values in each polygon us...</a></li> <li><a href='https://gisqas.blogspot.com/2018/11/style-is-geoserver-plugin-dead.html'>style - Is Geoserver's "styler" plugin dead?</a></li> <li><a href='https://gisqas.blogspot.com/2018/11/qgis-add-raster-value-to-features.html'>qgis - Add raster value to features AttributeError...</a></li> <li><a href='https://gisqas.blogspot.com/2018/11/getting-shapefile-of-river-from.html'>Getting shapefile of river from OpenStreetMap?</a></li> <li><a href='https://gisqas.blogspot.com/2018/11/qgis-how-to-merge-many-individual-kml.html'>qgis - How to merge many individual KML layers int...</a></li> <li><a href='https://gisqas.blogspot.com/2018/11/coordinate-system-should-point-data-be.html'>coordinate system - Should point data be equidista...</a></li> <li><a href='https://gisqas.blogspot.com/2018/11/python-fiona-preffered-method-for.html'>python - Fiona - Preffered method for defining a s...</a></li> <li><a href='https://gisqas.blogspot.com/2018/11/arcmap-creating-relationship-database.html'>arcmap - Creating relationship database in ArcGIS ...</a></li> <li><a href='https://gisqas.blogspot.com/2018/11/qgis-python-script-for-creating-project.html'>QGIS Python script for creating project file</a></li> <li><a href='https://gisqas.blogspot.com/2018/11/arcgis-10-geotiff-export.html'>ArcGIS 10 GeoTIFF Export</a></li> <li><a href='https://gisqas.blogspot.com/2018/11/arcgis-desktop-ifthen-field-calculator.html'>arcgis desktop - If/Then Field Calculator Return C...</a></li> <li><a href='https://gisqas.blogspot.com/2018/11/reading-feature-class-in-file.html'>Reading feature class in file geodatabase using R?</a></li> <li><a href='https://gisqas.blogspot.com/2018/11/raster-what-resampling-technique-should.html'>raster - What resampling technique should be used ...</a></li> <li><a href='https://gisqas.blogspot.com/2018/11/pyqgis-changing-layer-name-of-output.html'>pyqgis - Changing layer name of output vector from...</a></li> <li><a href='https://gisqas.blogspot.com/2018/11/qgis-how-to-fix-entry-point-for.html'>qgis - How to fix "The entry point for the procedu...</a></li> <li><a href='https://gisqas.blogspot.com/2018/11/compute-angle-of-line-in-conventional.html'>Compute Angle of line in conventional bearing usin...</a></li> <li><a href='https://gisqas.blogspot.com/2018/11/qgis-pyqgis-add-picture.html'>qgis - pyqgis add a picture</a></li> <li><a href='https://gisqas.blogspot.com/2018/11/arcpy-formatting-dependent-parameters.html'>arcpy - Formatting dependent parameters in Python ...</a></li> <li><a href='https://gisqas.blogspot.com/2018/11/arcgis-desktop-calculating-incidence.html'>arcgis desktop - Calculating incidence angle of po...</a></li> <li><a href='https://gisqas.blogspot.com/2018/11/joining-several-raster-mbtiles.html'>Joining several raster .mbtiles?</a></li> <li><a href='https://gisqas.blogspot.com/2018/11/arcgis-desktop-how-to-identify-polygons.html'>arcgis desktop - How to identify polygons with "fl...</a></li> <li><a href='https://gisqas.blogspot.com/2018/11/how-do-i-get-feature-from-single.html'>How do I get the feature from a single-feature OGR...</a></li> <li><a href='https://gisqas.blogspot.com/2018/11/qgis-align-label-text-using-expression.html'>qgis - Align label text using an expression</a></li> <li><a href='https://gisqas.blogspot.com/2018/11/spatial-analyst-understanding-arcgis.html'>spatial analyst - Understanding ArcGIS Flow accumu...</a></li> <li><a href='https://gisqas.blogspot.com/2018/11/geometry-how-to-calculate-angle-at.html'>geometry - How to calculate the angle at which two...</a></li> <li><a href='https://gisqas.blogspot.com/2018/11/postgis-how-to-render-table-with-mixed.html'>postgis - How to render a table with mixed geometr...</a></li> <li><a href='https://gisqas.blogspot.com/2018/11/creating-contiguous-pixel-based.html'>Creating contiguous pixel based cartogram using Ar...</a></li> <li><a href='https://gisqas.blogspot.com/2018/11/polygon-inner-convex-hulls-in-set-of-2d.html'>polygon - inner convex-hulls in a set of 2D points</a></li> <li><a href='https://gisqas.blogspot.com/2018/11/determining-percent-land-coverage.html'>Determining percent land coverage around points of...</a></li> <li><a href='https://gisqas.blogspot.com/2018/11/arcgis-server-why-has-web-mercator.html'>arcgis server - Why has Web Mercator (auxiliary sp...</a></li> <li><a href='https://gisqas.blogspot.com/2018/11/qgis-pyqgis-qgsvectorlayer-loading.html'>qgis - PyQGIS QgsVectorLayer() Loading Invalid Lay...</a></li> <li><a href='https://gisqas.blogspot.com/2018/11/qgis-split-polygon-with-polygon-in.html'>qgis - Split polygon with polygon in different tab...</a></li> <li><a href='https://gisqas.blogspot.com/2018/11/web-mapping-using-local-mbtiles-in.html'>web mapping - Using local mbtiles in openlayers?</a></li> <li><a href='https://gisqas.blogspot.com/2018/11/arcgis-desktop-how-to-randomly-subset-x.html'>arcgis desktop - How to randomly subset X% of sele...</a></li> <li><a href='https://gisqas.blogspot.com/2018/11/postgis-how-to-get-smallest-line.html'>postgis - How to get smallest line segments from i...</a></li> <li><a href='https://gisqas.blogspot.com/2018/11/rseries-grass-algorithm-in-qgis-32.html'>r.series GRASS algorithm in QGIS 3.2 output no-dat...</a></li> <li><a href='https://gisqas.blogspot.com/2018/11/arcpy-how-do-you-use-folders-as.html'>arcpy - How do you use folders as input/output par...</a></li> <li><a href='https://gisqas.blogspot.com/2018/11/google-earth-color-coded-elevation-data.html'>Google Earth - Color Coded elevation data</a></li> <li><a href='https://gisqas.blogspot.com/2018/11/openlayers-2-why-does-geoserver-not.html'>openlayers 2 - Why does Geoserver not serve my pri...</a></li> <li><a href='https://gisqas.blogspot.com/2018/11/geoserver-and-openlayers-in-production.html'>GeoServer and OpenLayers in production - Securing ...</a></li> <li><a href='https://gisqas.blogspot.com/2018/11/processing-vector-to-raster-faster-with.html'>Processing vector to raster faster with R</a></li> <li><a href='https://gisqas.blogspot.com/2018/11/qgis-3-selecting-only-visible-features.html'>qgis 3 - Selecting only visible features from diff...</a></li> <li><a href='https://gisqas.blogspot.com/2018/11/removing-small-pepper-polygons-from.html'>Removing small "salt & pepper" polygons from layer...</a></li> <li><a href='https://gisqas.blogspot.com/2018/11/arcgis-desktop-how-do-i-calculate.html'>arcgis desktop - How do I Calculate Grouped Percen...</a></li> <li><a href='https://gisqas.blogspot.com/2018/11/arcgis-desktop-how-to-workaround-large.html'>arcgis desktop - How to workaround large mosaic pr...</a></li> <li><a href='https://gisqas.blogspot.com/2018/11/how-to-use-vector-layers-in-qgis-using.html'>How to use "Merge vector layers" in QGIS using Geo...</a></li> <li><a href='https://gisqas.blogspot.com/2018/11/qgis-how-to-copy-attributes-from-many.html'>qgis - How to copy attributes from many columns to...</a></li> <li><a href='https://gisqas.blogspot.com/2018/11/qgis-polygonize-function-doesn-overlay.html'>qgis - Polygonize function doesn't overlay the sha...</a></li> <li><a href='https://gisqas.blogspot.com/2018/11/postgis-transform-to-srid-900913.html'>postgis - Transform to SRID 900913</a></li> <li><a href='https://gisqas.blogspot.com/2018/11/gpx-uploading-shapefile-onto-garmin-gps.html'>gpx - Uploading shapefile onto Garmin GPS, and dis...</a></li> <li><a href='https://gisqas.blogspot.com/2018/11/cartography-is-there-name-for.html'>cartography - Is there a name for deformation-base...</a></li> <li><a href='https://gisqas.blogspot.com/2018/11/creating-attribute-rules-using-arcpy-in.html'>Creating Attribute Rules using ArcPy in ArcGIS Pro</a></li> <li><a href='https://gisqas.blogspot.com/2018/11/geometry-calculating-spherical-polygon.html'>geometry - Calculating a spherical polygon centroid</a></li> <li><a href='https://gisqas.blogspot.com/2018/11/remote-sensing-ndvi-image-value-changes.html'>remote sensing - NDVI image value changes from -1 ...</a></li> <li><a href='https://gisqas.blogspot.com/2018/11/convert-exporting-vector-to-kml-with.html'>convert - Exporting vector to kml with ogr2ogr wit...</a></li> <li><a href='https://gisqas.blogspot.com/2018/11/change-data-format-in-qgis-field.html'>Change data format in QGIS field calculator using ...</a></li> <li><a href='https://gisqas.blogspot.com/2018/11/polygon-overlay-in-qgis.html'>polygon - "Identity" overlay in QGIS?</a></li> <li><a href='https://gisqas.blogspot.com/2018/11/coordinate-system-gdal-for-reprojection.html'>coordinate system - gdal for reprojection of VSCMO...</a></li> <li><a href='https://gisqas.blogspot.com/2018/11/arcgis-desktop-changing-second-line.html'>arcgis desktop - Changing second line text using A...</a></li> <li><a href='https://gisqas.blogspot.com/2018/11/arcgis-desktop-integrating-whitebox-gat.html'>arcgis desktop - Integrating Whitebox GAT (free an...</a></li> <li><a href='https://gisqas.blogspot.com/2018/11/in-openlayers-zoom-to-extent-of-all.html'>In OpenLayers zoom to extent of all overlays</a></li> <li><a href='https://gisqas.blogspot.com/2018/11/can-postgis-and-qgis-provide-dependable.html'>Can PostGIS and QGIS provide dependable multi-user...</a></li> <li><a href='https://gisqas.blogspot.com/2018/11/qgis-how-to-add-vertex-to-existing.html'>qgis - How to add vertex to an existing polyline p...</a></li> <li><a href='https://gisqas.blogspot.com/2018/11/postgis-pgrdijkstra-gives-wacky-routes.html'>postgis - pgr_dijkstra gives wacky routes sometime...</a></li> <li><a href='https://gisqas.blogspot.com/2018/11/qgis-openlayers-and-osgb-1936-crs-27700.html'>qgis - OpenLayers and OSGB 1936 (CRS 27700)</a></li> <li><a href='https://gisqas.blogspot.com/2018/11/spatial-database-detecting-patterns-in.html'>spatial database - Detecting patterns in vehicle G...</a></li> <li><a href='https://gisqas.blogspot.com/2018/11/seeing-qgis-python-commands.html'>Seeing QGIS Python Commands</a></li> <li><a href='https://gisqas.blogspot.com/2018/11/arcgis-100-how-to-convert-raster-data.html'>arcgis 10.0 - How to convert raster data into regu...</a></li> <li><a href='https://gisqas.blogspot.com/2018/11/arcgis-93-change-symbol-scale-in-arcmap.html'>arcgis 9.3 - Change the symbol scale in ArcMap leg...</a></li> <li><a href='https://gisqas.blogspot.com/2018/11/arcgis-desktop-update-xy-fields-when-i.html'>arcgis desktop - Update xy fields when I move points?</a></li> <li><a href='https://gisqas.blogspot.com/2018/11/uploading-data-to-trimble-via-pathfinder.html'>Uploading data to trimble via pathfinder</a></li> <li><a href='https://gisqas.blogspot.com/2018/11/qgis-322-openlayers-plugin-isn-listed.html'>QGIS 3.2.2 OpenLayers plugin isn't listed to install</a></li> <li><a href='https://gisqas.blogspot.com/2018/11/microstation-fme-features-to-read.html'>microstation - FME Features to read parameter</a></li> <li><a href='https://gisqas.blogspot.com/2018/11/sql-arcpy-cursors-where-clauses-and.html'>sql - Arcpy cursors, WHERE clauses, and date/time ...</a></li> <li><a href='https://gisqas.blogspot.com/2018/11/is-anzlic-metadata-supported-using-new.html'>Is ANZLIC Metadata supported using the new approac...</a></li> <li><a href='https://gisqas.blogspot.com/2018/11/moving-raster-to-different-mapset-grass.html'>Moving raster to different mapset GRASS GIS</a></li> <li><a href='https://gisqas.blogspot.com/2018/11/openlayers-2-how-to-create-wms-service.html'>openlayers 2 - How to create WMS service with GeoS...</a></li> <li><a href='https://gisqas.blogspot.com/2018/11/python-overlay-union-geopandas-improve.html'>python - Overlay Union Geopandas improve performance</a></li> <li><a href='https://gisqas.blogspot.com/2018/11/arcgis-desktop-how-to-fix-shapefile.html'>arcgis desktop - How to fix shapefile projections</a></li> <li><a href='https://gisqas.blogspot.com/2018/11/map-display-not-filling-window-in-qgis.html'>Map display not filling window in QGIS on Mac?</a></li> <li><a href='https://gisqas.blogspot.com/2018/11/arcgis-modelbuilder-looping-wrong-tools.html'>ArcGIS ModelBuilder looping wrong tools?</a></li> <li><a href='https://gisqas.blogspot.com/2018/11/wfs-geoserver-cql-cross-layer.html'>wfs - Geoserver CQL Cross Layer Intersection Failing</a></li> <li><a href='https://gisqas.blogspot.com/2018/11/qgis-stgeometry-to-sdogeometry.html'>qgis - ST_GEOMETRY to SDO_GEOMETRY</a></li> <li><a href='https://gisqas.blogspot.com/2018/11/performing-idw-interpolation-in-qgis.html'>Performing IDW interpolation in QGIS?</a></li> <li><a href='https://gisqas.blogspot.com/2018/11/python-odd-behavior-in-qgis-plugin-my.html'>python - Odd behavior in a QGIS plugin: my functio...</a></li> <li><a href='https://gisqas.blogspot.com/2018/11/rotate-geometry-generator-marker-line.html'>Rotate geometry generator marker line depending on...</a></li> <li><a href='https://gisqas.blogspot.com/2018/11/gis-principle-raster-vs-grid-vs-lattice.html'>gis principle - Raster vs Grid vs Lattice terminol...</a></li> <li><a href='https://gisqas.blogspot.com/2018/11/qgis-how-to-update-attribute-table-of.html'>qgis - How to update the attribute table of featur...</a></li> <li><a href='https://gisqas.blogspot.com/2018/11/qgis-where-to-find-qgsaffine-in-menu.html'>qgis - Where to find qgsaffine in the menu?</a></li> <li><a href='https://gisqas.blogspot.com/2018/11/qgis-how-to-remove-abnormalities-from.html'>qgis - How to remove abnormalities from the Green ...</a></li> <li><a href='https://gisqas.blogspot.com/2018/11/r-return-utm-zone-that-wgs84-point.html'>R: Return the UTM zone that a WGS84 point belongs to</a></li> <li><a href='https://gisqas.blogspot.com/2018/11/python-applying-layer-file-not.html'>python - Applying layer file not formating labels ...</a></li> <li><a href='https://gisqas.blogspot.com/2018/11/qgis-how-to-use-map-composer-in-stand.html'>qgis - How to use map composer in a stand-alone sc...</a></li> <li><a href='https://gisqas.blogspot.com/2018/11/when-is-3d-visualisation-in-gis-useful.html'>When is a 3D Visualisation in GIS Useful?</a></li> <li><a href='https://gisqas.blogspot.com/2018/11/how-to-join-external-tables-with.html'>How to join external tables with a shapefile's att...</a></li> </ul> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='https://gisqas.blogspot.com/2018/10/'> October 2018 </a> <span class='post-count' dir='ltr'>(209)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='https://gisqas.blogspot.com/2018/09/'> September 2018 </a> <span class='post-count' dir='ltr'>(205)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='https://gisqas.blogspot.com/2018/08/'> August 2018 </a> <span class='post-count' dir='ltr'>(211)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='https://gisqas.blogspot.com/2018/07/'> July 2018 </a> <span class='post-count' dir='ltr'>(189)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='https://gisqas.blogspot.com/2018/06/'> June 2018 </a> <span class='post-count' dir='ltr'>(198)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='https://gisqas.blogspot.com/2018/05/'> May 2018 </a> <span class='post-count' dir='ltr'>(230)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='https://gisqas.blogspot.com/2018/04/'> April 2018 </a> <span class='post-count' dir='ltr'>(215)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='https://gisqas.blogspot.com/2018/03/'> March 2018 </a> <span class='post-count' dir='ltr'>(211)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='https://gisqas.blogspot.com/2018/02/'> February 2018 </a> <span class='post-count' dir='ltr'>(180)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='https://gisqas.blogspot.com/2018/01/'> January 2018 </a> <span class='post-count' dir='ltr'>(194)</span> </li> </ul> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='https://gisqas.blogspot.com/2017/'> 2017 </a> <span class='post-count' dir='ltr'>(2551)</span> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='https://gisqas.blogspot.com/2017/12/'> December 2017 </a> <span class='post-count' dir='ltr'>(218)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='https://gisqas.blogspot.com/2017/11/'> November 2017 </a> <span class='post-count' dir='ltr'>(210)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='https://gisqas.blogspot.com/2017/10/'> October 2017 </a> <span class='post-count' dir='ltr'>(203)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='https://gisqas.blogspot.com/2017/09/'> September 2017 </a> <span class='post-count' dir='ltr'>(198)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='https://gisqas.blogspot.com/2017/08/'> August 2017 </a> <span class='post-count' dir='ltr'>(215)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='https://gisqas.blogspot.com/2017/07/'> July 2017 </a> <span class='post-count' dir='ltr'>(235)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='https://gisqas.blogspot.com/2017/06/'> June 2017 </a> <span class='post-count' dir='ltr'>(185)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='https://gisqas.blogspot.com/2017/05/'> May 2017 </a> <span class='post-count' dir='ltr'>(205)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='https://gisqas.blogspot.com/2017/04/'> April 2017 </a> <span class='post-count' dir='ltr'>(192)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='https://gisqas.blogspot.com/2017/03/'> March 2017 </a> <span class='post-count' dir='ltr'>(227)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='https://gisqas.blogspot.com/2017/02/'> February 2017 </a> <span class='post-count' dir='ltr'>(209)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='https://gisqas.blogspot.com/2017/01/'> January 2017 </a> <span class='post-count' dir='ltr'>(254)</span> </li> </ul> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='https://gisqas.blogspot.com/2016/'> 2016 </a> <span class='post-count' dir='ltr'>(2612)</span> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='https://gisqas.blogspot.com/2016/12/'> December 2016 </a> <span class='post-count' dir='ltr'>(234)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='https://gisqas.blogspot.com/2016/11/'> November 2016 </a> <span class='post-count' dir='ltr'>(182)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='https://gisqas.blogspot.com/2016/10/'> October 2016 </a> <span class='post-count' dir='ltr'>(231)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='https://gisqas.blogspot.com/2016/09/'> September 2016 </a> <span class='post-count' dir='ltr'>(209)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='https://gisqas.blogspot.com/2016/08/'> August 2016 </a> <span class='post-count' dir='ltr'>(256)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='https://gisqas.blogspot.com/2016/07/'> July 2016 </a> <span class='post-count' dir='ltr'>(206)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='https://gisqas.blogspot.com/2016/06/'> June 2016 </a> <span class='post-count' dir='ltr'>(201)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='https://gisqas.blogspot.com/2016/05/'> May 2016 </a> <span class='post-count' dir='ltr'>(230)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='https://gisqas.blogspot.com/2016/04/'> April 2016 </a> <span class='post-count' dir='ltr'>(197)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='https://gisqas.blogspot.com/2016/03/'> March 2016 </a> <span class='post-count' dir='ltr'>(255)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='https://gisqas.blogspot.com/2016/02/'> February 2016 </a> <span class='post-count' dir='ltr'>(201)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='https://gisqas.blogspot.com/2016/01/'> January 2016 </a> <span class='post-count' dir='ltr'>(210)</span> </li> </ul> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='https://gisqas.blogspot.com/2015/'> 2015 </a> <span class='post-count' dir='ltr'>(2324)</span> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='https://gisqas.blogspot.com/2015/12/'> December 2015 </a> <span class='post-count' dir='ltr'>(218)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='https://gisqas.blogspot.com/2015/11/'> November 2015 </a> <span class='post-count' dir='ltr'>(195)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='https://gisqas.blogspot.com/2015/10/'> October 2015 </a> <span class='post-count' dir='ltr'>(193)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='https://gisqas.blogspot.com/2015/09/'> September 2015 </a> <span class='post-count' dir='ltr'>(206)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='https://gisqas.blogspot.com/2015/08/'> August 2015 </a> <span class='post-count' dir='ltr'>(203)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='https://gisqas.blogspot.com/2015/07/'> July 2015 </a> <span class='post-count' dir='ltr'>(208)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='https://gisqas.blogspot.com/2015/06/'> June 2015 </a> <span class='post-count' dir='ltr'>(210)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='https://gisqas.blogspot.com/2015/05/'> May 2015 </a> <span class='post-count' dir='ltr'>(205)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='https://gisqas.blogspot.com/2015/04/'> April 2015 </a> <span class='post-count' dir='ltr'>(220)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='https://gisqas.blogspot.com/2015/03/'> March 2015 </a> <span class='post-count' dir='ltr'>(226)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='https://gisqas.blogspot.com/2015/02/'> February 2015 </a> <span class='post-count' dir='ltr'>(179)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='https://gisqas.blogspot.com/2015/01/'> January 2015 </a> <span class='post-count' dir='ltr'>(61)</span> </li> </ul> </li> </ul> </div> </div> <div class='clear'></div> </div> </div></div> <table border='0' cellpadding='0' cellspacing='0' class='section-columns columns-2'> <tbody> <tr> <td class='first columns-cell'> <div class='sidebar no-items section' id='sidebar-right-2-1'></div> </td> <td class='columns-cell'> <div class='sidebar no-items section' id='sidebar-right-2-2'></div> </td> </tr> </tbody> </table> <div class='sidebar no-items section' id='sidebar-right-3'></div> </aside> </div> </div> </div> <div style='clear: both'></div> <!-- columns --> </div> <!-- main --> </div> </div> <div class='main-cap-bottom cap-bottom'> <div class='cap-left'></div> <div class='cap-right'></div> </div> </div> <footer> <div class='footer-outer'> <div class='footer-cap-top cap-top'> <div class='cap-left'></div> <div class='cap-right'></div> </div> <div class='fauxborder-left footer-fauxborder-left'> <div class='fauxborder-right footer-fauxborder-right'></div> <div class='region-inner footer-inner'> <div class='foot no-items section' id='footer-1'></div> <table border='0' cellpadding='0' cellspacing='0' class='section-columns columns-2'> <tbody> <tr> <td class='first columns-cell'> <div class='foot no-items section' id='footer-2-1'></div> </td> <td class='columns-cell'> <div class='foot no-items section' id='footer-2-2'></div> </td> </tr> </tbody> </table> <!-- outside of the include in order to lock Attribution widget --> <div class='foot section' id='footer-3' name='Footer'><div class='widget Attribution' data-version='1' id='Attribution1'> <div class='widget-content' style='text-align: center;'> Theme images by <a href='http://www.istockphoto.com/portfolio/enot-poloskun?platform=blogger' target='_blank'>enot-poloskun</a>. Powered by <a href='https://www.blogger.com' target='_blank'>Blogger</a>. </div> <div class='clear'></div> </div></div> </div> </div> <div class='footer-cap-bottom cap-bottom'> <div class='cap-left'></div> <div class='cap-right'></div> </div> </div> </footer> <!-- content --> </div> </div> <div class='content-cap-bottom cap-bottom'> <div class='cap-left'></div> <div class='cap-right'></div> </div> </div> </div> <script type='text/javascript'> window.setTimeout(function() { document.body.className = document.body.className.replace('loading', ''); }, 10); </script> <script type="text/javascript" src="https://www.blogger.com/static/v1/widgets/984859869-widgets.js"></script> <script type='text/javascript'> window['__wavt'] = 'AOuZoY45QeVcxRBjyqptEYggmCLwDZ09Ng:1732651461354';_WidgetManager._Init('//www.blogger.com/rearrange?blogID\x3d6220276627345324806','//gisqas.blogspot.com/2018/11/qgis-python-script-for-creating-project.html','6220276627345324806'); _WidgetManager._SetDataContext([{'name': 'blog', 'data': {'blogId': '6220276627345324806', 'title': 'Blog', 'url': 'https://gisqas.blogspot.com/2018/11/qgis-python-script-for-creating-project.html', 'canonicalUrl': 'https://gisqas.blogspot.com/2018/11/qgis-python-script-for-creating-project.html', 'homepageUrl': 'https://gisqas.blogspot.com/', 'searchUrl': 'https://gisqas.blogspot.com/search', 'canonicalHomepageUrl': 'https://gisqas.blogspot.com/', 'blogspotFaviconUrl': 'https://gisqas.blogspot.com/favicon.ico', 'bloggerUrl': 'https://www.blogger.com', 'hasCustomDomain': false, 'httpsEnabled': true, 'enabledCommentProfileImages': true, 'gPlusViewType': 'FILTERED_POSTMOD', 'adultContent': false, 'analyticsAccountNumber': '', 'encoding': 'UTF-8', 'locale': 'en-GB', 'localeUnderscoreDelimited': 'en_gb', 'languageDirection': 'ltr', 'isPrivate': false, 'isMobile': false, 'isMobileRequest': false, 'mobileClass': '', 'isPrivateBlog': false, 'isDynamicViewsAvailable': true, 'feedLinks': '\x3clink rel\x3d\x22alternate\x22 type\x3d\x22application/atom+xml\x22 title\x3d\x22Blog - Atom\x22 href\x3d\x22https://gisqas.blogspot.com/feeds/posts/default\x22 /\x3e\n\x3clink rel\x3d\x22alternate\x22 type\x3d\x22application/rss+xml\x22 title\x3d\x22Blog - RSS\x22 href\x3d\x22https://gisqas.blogspot.com/feeds/posts/default?alt\x3drss\x22 /\x3e\n\x3clink rel\x3d\x22service.post\x22 type\x3d\x22application/atom+xml\x22 title\x3d\x22Blog - Atom\x22 href\x3d\x22https://www.blogger.com/feeds/6220276627345324806/posts/default\x22 /\x3e\n\n\x3clink rel\x3d\x22alternate\x22 type\x3d\x22application/atom+xml\x22 title\x3d\x22Blog - Atom\x22 href\x3d\x22https://gisqas.blogspot.com/feeds/7733141262871347704/comments/default\x22 /\x3e\n', 'meTag': '', 'adsenseHostId': 'ca-host-pub-1556223355139109', 'adsenseHasAds': true, 'adsenseAutoAds': false, 'boqCommentIframeForm': true, 'loginRedirectParam': '', 'view': '', 'dynamicViewsCommentsSrc': '//www.blogblog.com/dynamicviews/4224c15c4e7c9321/js/comments.js', 'dynamicViewsScriptSrc': '//www.blogblog.com/dynamicviews/1339d576f20ca433', 'plusOneApiSrc': 'https://apis.google.com/js/platform.js', 'disableGComments': true, 'interstitialAccepted': false, 'sharing': {'platforms': [{'name': 'Get link', 'key': 'link', 'shareMessage': 'Get link', 'target': ''}, {'name': 'Facebook', 'key': 'facebook', 'shareMessage': 'Share to Facebook', 'target': 'facebook'}, {'name': 'BlogThis!', 'key': 'blogThis', 'shareMessage': 'BlogThis!', 'target': 'blog'}, {'name': 'X', 'key': 'twitter', 'shareMessage': 'Share to X', 'target': 'twitter'}, {'name': 'Pinterest', 'key': 'pinterest', 'shareMessage': 'Share to Pinterest', 'target': 'pinterest'}, {'name': 'Email', 'key': 'email', 'shareMessage': 'Email', 'target': 'email'}], 'disableGooglePlus': true, 'googlePlusShareButtonWidth': 0, 'googlePlusBootstrap': '\x3cscript type\x3d\x22text/javascript\x22\x3ewindow.___gcfg \x3d {\x27lang\x27: \x27en_GB\x27};\x3c/script\x3e'}, 'hasCustomJumpLinkMessage': false, 'jumpLinkMessage': 'Read more', 'pageType': 'item', 'postId': '7733141262871347704', 'pageName': 'QGIS Python script for creating project file', 'pageTitle': 'Blog: QGIS Python script for creating project file'}}, {'name': 'features', 'data': {}}, {'name': 'messages', 'data': {'edit': 'Edit', 'linkCopiedToClipboard': 'Link copied to clipboard', 'ok': 'Ok', 'postLink': 'Post link'}}, {'name': 'template', 'data': {'name': 'custom', 'localizedName': 'Custom', 'isResponsive': false, 'isAlternateRendering': false, 'isCustom': true}}, {'name': 'view', 'data': {'classic': {'name': 'classic', 'url': '?view\x3dclassic'}, 'flipcard': {'name': 'flipcard', 'url': '?view\x3dflipcard'}, 'magazine': {'name': 'magazine', 'url': '?view\x3dmagazine'}, 'mosaic': {'name': 'mosaic', 'url': '?view\x3dmosaic'}, 'sidebar': {'name': 'sidebar', 'url': '?view\x3dsidebar'}, 'snapshot': {'name': 'snapshot', 'url': '?view\x3dsnapshot'}, 'timeslide': {'name': 'timeslide', 'url': '?view\x3dtimeslide'}, 'isMobile': false, 'title': 'QGIS Python script for creating project file', 'description': 'Is there a way to create QGIS project file( .qgs ) using only Python script outside QGIS Python console. I am trying to publish a map using ...', 'url': 'https://gisqas.blogspot.com/2018/11/qgis-python-script-for-creating-project.html', 'type': 'item', 'isSingleItem': true, 'isMultipleItems': false, 'isError': false, 'isPage': false, 'isPost': true, 'isHomepage': false, 'isArchive': false, 'isLabelSearch': false, 'postId': 7733141262871347704}}]); _WidgetManager._RegisterWidget('_HeaderView', new _WidgetInfo('Header1', 'header', document.getElementById('Header1'), {}, 'displayModeFull')); _WidgetManager._RegisterWidget('_BlogView', new _WidgetInfo('Blog1', 'main', document.getElementById('Blog1'), {'cmtInteractionsEnabled': false, 'lightboxEnabled': true, 'lightboxModuleUrl': 'https://www.blogger.com/static/v1/jsbin/1575117483-lbx__en_gb.js', 'lightboxCssUrl': 'https://www.blogger.com/static/v1/v-css/1964470060-lightbox_bundle.css'}, 'displayModeFull')); _WidgetManager._RegisterWidget('_FeaturedPostView', new _WidgetInfo('FeaturedPost1', 'main', document.getElementById('FeaturedPost1'), {}, 'displayModeFull')); _WidgetManager._RegisterWidget('_PopularPostsView', new _WidgetInfo('PopularPosts1', 'main', document.getElementById('PopularPosts1'), {}, 'displayModeFull')); _WidgetManager._RegisterWidget('_BlogSearchView', new _WidgetInfo('BlogSearch1', 'sidebar-right-1', document.getElementById('BlogSearch1'), {}, 'displayModeFull')); _WidgetManager._RegisterWidget('_BlogArchiveView', new _WidgetInfo('BlogArchive1', 'sidebar-right-1', document.getElementById('BlogArchive1'), {'languageDirection': 'ltr', 'loadingMessage': 'Loading\x26hellip;'}, 'displayModeFull')); _WidgetManager._RegisterWidget('_AttributionView', new _WidgetInfo('Attribution1', 'footer-3', document.getElementById('Attribution1'), {}, 'displayModeFull')); </script> </body> </html>