Tag Info

Hot answers tagged

14

You can use the GDAL/OGR python API, the code will be like that: from osgeo import ogr shapefile = ogr.Open( "shapfile.shp",1 ) layer=shapefile.GetLayerByIndex(0) count=layer.GetFeatureCount() for feature in range(count): layer.DeleteFeature(feature)


10

The command line ogr2ogr with a where clause guaranteed to create empty results is one quick and easy method: ogr2ogr output.shp input.shp -where "FID < 0" The overview page for python and OGR (and GDAL) is http://trac.osgeo.org/gdal/wiki/GdalOgrInPython


10

Sample code to do 1. is on the Online Help for AddLayer (arcpy.mapping). The steps for 2. are in the Online Help for Publishing a map service with Python. Note that it is not possible to create an MXD using ArcPy - you need to have an existing MXD to which you can add layers. That design decision is described in the Online Help on Guidelines for ...


9

You can do this in pyshp. It's simple but not obvious because I never envisioned this use case. But it does make sense for automated update applications. I tested the following 6 lines of code and it worked great: import shapefile r = shapefile.Reader("myshape") w = shapefile.Writer(r.shapeType) # This line will give us the same dbf schema w.fields = ...


9

Put your script in .qgis/python/startup.py and it should run when QGIS is opened. However, this will run with any project you open, which you may not want. So you might be better off setting up a python macro in the specific project. File > Project properties > Macros. Enable macrcos by checking the box. def openProject(): wack your code here! def ...


8

Automatic generalization algorithms are not yet a complete solution, they still often make decisions a careful cartographer would abhor. Natural Earth has a good background article on how their approaches to generalizing features, a multi-step manual process. Axpand claims the Swiss Topography Office had an 80% success rate with automatic generalization ...


8

With help from Mark Cederholm I have a working solution using python and arcobjects. It's rough around the edges, but it got the job done. After following the recipe on that page, create a new script which uses the GetLibPath, NewObj, CType, OpenFeatureClass functions from snippets.py. Also create the rename lookup tables in .csv format: Field to Field ...


8

This isn't really a standalone answer, more of an addition to @PolyGeo's answer as it addresses the 'mxd creation from scratch' in python issue. Note: it's probably a bit advanced for a python 'new bee'... You can create MXD's from scratch in python if you access ArcObjects. You will need the comtypes package and if using ArcGIS 10.1, you need to make a ...


8

The most efficient way to make bulk changes to multiple documents is to use Python scripting available in ArcGIS. You would need to write a Python script that will iterate (or go through) each of the map document files you have and apply the changes you specify in the code. Start looking for the arcpy.mapping module. 10.1 and 10.2 have more functions ...


7

I use the ftools plugin in Quantum most of the time. I also use the v.generalize in GRASS. It has the advantage of giving you several different algortithms options for simplification, smoothing, and network generalization depending on what you are trying to do. http://grass.itc.it/gdp/html_grass64/v.generalize.html


7

In GRASS GIS, you can use v.edit's snap tool. snap: Snap vector features in given threshold There are options to snap to a node or a vertex.


7

If using the Web Archive: download the war file and deploy it, then login and make all customizations (remove layers, adjust defaults, etc) until it suits you. Now shutdown the servlet container, zip the geoserver directory and rename the resulting geoserver.zip as .war and you're done. A .war file in fact is just a .zip file in disguise. IMPORTANT: ...


7

For pure Python, use GDAL's OGR module: import os from osgeo import ogr from glob import glob # Establish a connection to a PostGIS database pg = ogr.GetDriverByName('PostgreSQL') if pg is None: raise RuntimeError('PostgreSQL driver not available') conn = pg.Open("PG:dbname='postgis' user='postgres'", True) if conn is None: raise ...


6

Here's how to do it Model Builder in ArcGIS 10. This will take the selected features of VectorTiles and clip the InputRaster by each selected feature saving it to the Default.gdb with the TileID as part of the new raster name. Iterate Feature Selection is added from the Insert menu. TileVectors is the Input Features and the group field is a unique tile id ...


6

Why not save a copy of the blank Shapefile and over-write your Shapefile of interest.


6

Adding this line fixes the issue ESRI.ArcGIS.RuntimeManager.BindLicense(ESRI.ArcGIS.ProductCode.Desktop);


6

For a fantastic way to detect, visualize, and report your findings to the public, check out the Landtrendr (Landsat-based Detection of Trends in Disturbance and Recovery) program from OSU. The Landtrendr program is one of the most exciting recent developments in change detection research. There is very good documentation on the methods, and Landtrendr code ...


5

This code works for me in 9.3.1 ... public static void TestAlterAlias(IApplication app) { // make a dictionary of old/new names Dictionary<string, string> nameDict = new Dictionary<string, string>(StringComparer.CurrentCultureIgnoreCase); nameDict.Add("qsectionalias", "qsectionalias2"); nameDict.Add("sursysalias", ...


5

Is is possible that LIDAR has been flown recently in the area? You can extract buildings this way... LIDAR would most likely be too expensive to fly yourself, probably at least 8-12k for an area that size. http://knol.google.com/k/aerial-extraction-of-roof-surfaces-for-solar-analysis# Found that article, may be of some help.


5

I've developed a model/method before for identifying areas/features that labels are overlapping. The work flow goes something like this: Determine distance between features that labels usually overlap (e.g. 50ft, 500ft, 1000ft...etc). Buffer labeled feature by distance from step 1. Run Intersect tool on buffer result. Join result of Intersect tool layer ...


5

There exists an extremely efficient solution to this problem that avoids computing ten thousand grids of interpolated data. Using IDW to estimate precipitation tends to give poor results, so I will provide a more general answer that applies to better procedures such as Kriging as well as IDW. What is common to these interpolation procedures is that they ...


5

There is a distributive flow tool available in the applications prototype lab. Here is a blog and some links and data. Even if you are not looking for this. I like it so here. Credit: Brad Simantel With your edit addition to the question I will add this link for placing line decorations with code. If you desire more help on using arrows add to your ...


5

I'm not familiar with programming in JavaScript but in the OpenStreetMap Wiki there is a section describing "Mercator". Following this link you'll find a sample code snippet to tranform from lat long to mercator. I actually don't know if it's correct because I did not test the code.


5

I use the following settings to "Start a program" in the task scheduler. I find it best to use the full path to the Python executable to be safe. Program/script: Full path to Python.exe, C:\Python27\ArcGIS10.2\python.exe Arguments: Name of script, script.py Start in: Location of script.py, something like C:\path\to\script Also, if you pass in arguments ...


5

You can do it in three steps: Get group names, create groups, and move layers. For testing purposes, I've replicated your sample scenario: Run the following code snippet in your QGIS Python console: # 1. Get group names and list of layer ids root = QgsProject.instance().layerTreeRoot() dictGroups={} for layer in root.findLayers(): if ...


4

just to follow up on SRG's FME recommendation, the Natural Resources Canada has done a significant amount of work using FME for generalization. They presented at the 2009 FME User Conference, and you can find there talk here http://www.fmeuc.com/archive/fmeuc2009/index.php (it is Talk 2. Generalizing a 1:250 000 National Topographic Map at Natural Resources ...


4

If you have ArcInfo workstation, there is a module called Librarian, which has an interesting command called VISIT. I'm not suggesting that you actually use Librarian, but consider looking at what VISIT does. It's been many years, and I can't find any online documentation for it, but as I recall VISIT allows you to loop through a selected set of tiles ...


4

If you are familiar with Python, you could use Qgis Python console with something like that: #get a pointer to active layer layer=iface.activeLayer () #get a copy of selected features features=layer.selectedFeatures () #create a new feature and a new geometry to hold the output newgeometry = QgsGeometry() newfeature=QgsFeature() # loop for feature in ...


4

if your dataset is relatively small or tightly focussed and the end product is a map you might try exporting to a drawing program like Illustrator or Inkscape which have much more developed simplification and generalization tools. If you have deep pockets Avenza Map Publisher provides a two way bridge between ArcMap and Illustrator.


4

You can download an evaluation copy of FME from Safe Software (http://www.safe.com) and try using the FME Workbench. There are a couple of transformers that can assist you in generalizing your geographical data while providing flexibility to virtually work with most GIS formats. ~SRG



Only top voted, non community-wiki answers of a minimum length are eligible