QGIS: Difference between revisions
Brian Wilson (talk | contribs) |
Brian Wilson (talk | contribs) |
||
Line 150: | Line 150: | ||
This takes hours and then it fails. | This takes hours and then it fails. | ||
What ''does'' work is | What ''does'' work is installing other osgeo packages, for example GDAL: | ||
brew install gdal2 | brew install gdal2 | ||
brew install gdal2-python | |||
echo /usr/local/opt/gdal2-python/lib/python2.7/site-packages >> /usr/local/lib/python2.7/site-packages/gdal2-python.pth | |||
=== Older problem : Missing symbol in libgeos === | === Older problem : Missing symbol in libgeos === |
Revision as of 06:18, 23 February 2017
I looked for a spatial data browser and found GeoApt Spatial Data Browser. I got interested in adding to it, so I started looking at its internals. I became more curious about QGIS.
Working with OpenStreetMap
Brian H wants to display a shapefile, and clip part of it out to use in JOSM for uploading to OpenStreetMap.
I think there is an OSM plugin for QGIS but the workflow we came up with is to extract the data you want to add in QGIS, save it in a shapefile, and then start up JOSM and load the shapefile there for upload to OpenStreetMap.
Displaying OSM as a tiled layer in QGIS
I'd like to be able to see what data is already in OpenStreetMap while running QGIS. Both for day to day usage in mapping and for OpenStreetMap projects.
(Thanks Nick)
Save this text into a file with the .xml extension. Variations on this will work for ANY tiled map service, not just OSM. In QGIS, use "Add Raster Layer" and navigate to the file you saved. Voila! A base map.
<GDAL_WMS> <Service name="TMS"> <ServerUrl>http://tile.openstreetmap.org/${z}/${x}/${y}.png</ServerUrl> </Service> <DataWindow> <UpperLeftX>-20037508.34</UpperLeftX> <UpperLeftY>20037508.34</UpperLeftY> <LowerRightX>20037508.34</LowerRightX> <LowerRightY>-20037508.34</LowerRightY> <TileLevel>18</TileLevel> <TileCountX>1</TileCountX> <TileCountY>1</TileCountY> <YOrigin>top</YOrigin> </DataWindow> <Projection>EPSG:900913</Projection> <BlockSizeX>256</BlockSizeX> <BlockSizeY>256</BlockSizeY> <BandsCount>3</BandsCount> <Cache /> </GDAL_WMS>
I leave the map in Web Mercator but you can do reprojection on the fly if you want.
Screenshot of Finley NWR area.
Log messages
I did actually find the button for this (see above screenshot) and now I can't find it again. Please tell me what I did. :-) The user manual I found is wrong. :-( Nick mentioned how great it would be to see error messages when trying to load a WMS layer.
Reprojection on the fly
or WHERE'S MY DATA??? I can't see it!
By default, QGIS has reprojection turned off. So if you bring in a layer in web mercator and then bring in a shapefile that is in a different projection, the layers will not line up.
- File->Project Properties (or control-shift-P)
- Coordinate Reference System (CRS) tab
- Check the box "Enable 'on the fly' CRS transformation"
The map should now render all the layers in the right places. QGIS 1.9 is a little buggy, so you might have to do this before adding layers. Not sure. It usually works for me but I sat here working with Nick and it was troublesome.
Adding a shapefile with hydro data
Download the shapefile, for example, for Benton county. http://gis.co.benton.or.us/GISDataDownload/Natural_Features/water.zip Unzip it someplace convenient.
- In QGIS, click on "Add Vector Layer" (icon: a green map with a +)
- Click Browse and find the water.shp file.
- Click Open. If you can't see the layer then try right-clicking the layer in the table of contents and select Zoom To Layer Extent.
- Set the CRS. Properties (double click on the layer name) "General" Click "Specify CRS" and set it to EPSG:2913 NAR83(HARN_ / Oregon North (ft)
- For this particular line layer you might want to use the Properties (double click on the layer name) "Style" tab to make the color blue and make the line a little wider (.36 works for me).
Zoomed into Finley NWR my map looks like this now. I used purple for the water shapefile so it's easier to see.
Extracting data from a layer
Create a shapefile to define region of interest
- Create a new shapefile to define a region of interest. To do so click "New Shapefile Layer" (green map with yellow star)
The new layer will be added to your table of contents.
- As above, set its CRS to EPSG:2913. The CRS settings HAVE TO BE THE SAME for the clip operation to work.
- Select that layer in the table of contents by clicking on it.
- Click on "Toggle editing" (a blue pen) -- the button should stay "depressed".
- Click on "Create new feature" (A polygon with red vertices)
Now you can create a polygon around your area of interest on the map. Left click = add vertex Right click = done. Enter an ID value (I used "1") and then stop editing and save your changes. (Click "Toggle editing" again.)
Region of interest shows up in blue on my map.
Clip water features using region of interest
In the "Vector" menu (in the menu toolbar at the top) use Geoprocessing Tools->Clip and select the layers you want to use.
In this example,
- The "Input vector layer" is "water"
- The "Clip layer" is "finley_roi"
- Set the "Output shapefile" as you desire, and
- click ok.
Here I have dragged the water_in_finley to the top of the table of contents, changed it to green, and unchecked OSM layer to make it visible.
Reproject and export
I know you can use a shapefile in JOSM but you can export to many other formats (KML, for example). I need to export to WGS84 (EPSG:4326) too
To export the data (and reproject it),
- Right click on the layer in the table of contents and select "Save As..."
- Set the Format (I choose KML, Brian H leaves it at Shapefile)
- Set the name
- Select the correct CRS (WGS 84)
- Click okay.
and we're done.
QGIS on the Mac
The normal route up until now has been to use the Kyngchaos.com version. This works 95% of the time for me.
I really want to be able to use ESRI file geodatabases though, so now I am trying the Homebrew version.
First add the repository for OSGEO projects,
brew tap osgeo/osgeo4mac brew update brew upgrade
Add the prerequisite numpy package, I choose pip for this instead of brew. Can't remember why.
pip install numpy pip install scipy
Then (try to) build qgis2
brew install qgis2
2017-02-13 FAILED!!! This takes hours and then it fails.
What does work is installing other osgeo packages, for example GDAL:
brew install gdal2 brew install gdal2-python echo /usr/local/opt/gdal2-python/lib/python2.7/site-packages >> /usr/local/lib/python2.7/site-packages/gdal2-python.pth
Older problem : Missing symbol in libgeos
(and sundry other problems)
I had a problem with a missing libgeos symbol in Python in QGIS at startup that prevented some of the geoprocessing tools from functioning.
I was able to fix it by scrubbing out various binaries left over from all the times I have tried different combinations of GDAL and QGIS and dependencies like GEOS and matplotlib and numpy and scipy by hunting them down and rm'ing them, they lived in /usr/local/{lib|bin} and /Applications and /Library/Frameworks and /Library/Python/2.7/site-packages.
Basically I went into each of those folders and used rm to delete anything geospatial. Stellar is a spare laptop right now so I felt confident I could do this, if I broke anything, oh well. It's not in heavy use for GIS right now so it's a good experimental platform.
Building QGIS from source
This is an onerous task... I have not succeeded yet. I want to be able to contribute code changes eventually!
First go do this: Building GDAL on Linux
Then do this based on this page: http://www.qgis.org/api/INSTALL.html#toc3
You don't want to overwrite your custom geos or gdal so this is different than the above link indicates. BTW I am building on Linux Mint 14, not Ubuntu or Debian
I like to break things up into smaller chunks too so I can see what's going on more easily.
# I'd be surprised if you dont already have these sudo apt-get install xauth xfonts-base
# some general tools and development stuff sudo apt-get install bison cmake doxygen flex git pkg-config python-dev python-sip python-sip-dev graphviz xvfb txt2tags sudo apt-get install libfcgi-dev libgsl0-dev libexpat1-dev
# some QT tools sudo apt-get install libqt4-dev libqt4-opengl-dev libqtwebkit-dev libqwt5-qt4-dev pyqt4-dev-tools python-qt4 python-qt4-dev
# some gis things sudo apt-get install libspatialindex-dev libspatialite-dev libsqlite3-dev
- left out because depend on gdal
- libosgearth-dev libopenscenegraph-dev