Merged changes from the 0.6.0 release branch
git-svn-id: http://svn.osgeo.org/qgis/trunk@2526 c8812cc2-4d05-0410-92ff-de0c093fc19c
43
AUTHORS
@ -1,16 +1,27 @@
|
||||
The following have contributed to QGis:
|
||||
Carl Anderson
|
||||
Christoph Spoerri <spoerri at users.sourceforge.net>
|
||||
Denis Antipov <rawbytes at users.sourceforge.net>
|
||||
Gary E.Sherman <sherman at mrcc dot com>
|
||||
Gavin Macaulay <g_j_m at users.sourceforge.net>
|
||||
Jens Oberender <j.obi at troja.net>
|
||||
Lars Luthman <larsl at users.sourceforge.net>
|
||||
Marco Hugentobler <mhugent at users.sourceforge.net>
|
||||
Mark Coletti <mcoletti at users.sourceforge.net>
|
||||
Masaru Hoshi <hoshi at users.sourceforge.net>
|
||||
Peter Brewer <p.w.brewer at rdg dot ac dot uk>
|
||||
Radim Blazek <blazek at itc.it>
|
||||
Steve Halasz <stevehalasz at users.sourceforge.net>
|
||||
Tim Sutton <tim at linfiniti.com>
|
||||
Tom Elwertowski <telwertowski at users.sourceforge.net>
|
||||
# The following have contributed to QGis:
|
||||
# --------------------------------------------------------
|
||||
# Please note that this file is parsed by the about box
|
||||
# for the contributors list, so names should be strictly
|
||||
# in the format:
|
||||
# name [tab] <email>
|
||||
#
|
||||
# The name will be used to infer the image name, with spaces
|
||||
# replaced by underscores. If no matching image is found
|
||||
# a blank image will be displayed.
|
||||
# Images are read out of $PREFIX/share/images/contributors/
|
||||
# ---------------------------------------------------------
|
||||
Gary E.Sherman <sherman at mrcc dot com>
|
||||
Steve Halasz <stevehalasz at users.sourceforge.net>
|
||||
Marco Hugentobler <mhugent at users.sourceforge.net>
|
||||
Tim Sutton <tim at linfiniti.com>
|
||||
Denis Antipov <rawbytes at users.sourceforge.net>
|
||||
Mark Coletti <mcoletti at users.sourceforge.net>
|
||||
Lars Luthman <larsl at users.sourceforge.net>
|
||||
Jens Oberender <j.obi at troja.net>
|
||||
Christoph Spoerri <spoerri at users.sourceforge.net>
|
||||
Carl Anderson <>
|
||||
Gavin Macaulay <g_j_m at users.sourceforge.net>
|
||||
Masaru Hoshi <hoshi at users.sourceforge.net>
|
||||
Peter Brewer <p.w.brewer at rdg dot ac dot uk>
|
||||
Radim Blazek <blazek at itc.it>
|
||||
Tom Elwertowski <telwertowski at users.sourceforge.net>
|
||||
|
124
ChangeLog
@ -3,12 +3,63 @@ QGIS Change Log
|
||||
------------------------------------------------------------------------------
|
||||
Version 0.6 'Simon' .... development version
|
||||
|
||||
2004-12-19 [gsherman] 0.6.0rc2
|
||||
** Updated README
|
||||
** Added main.cpp so spit builds as standalone and plugin. Makefile.am modified
|
||||
so spit binary installs in PREFIX dir
|
||||
|
||||
2004-12-19 [timlinux] 0.6.0rc2
|
||||
** Added Slovak translation from Lubos Balazovic
|
||||
** Massive documentation updates
|
||||
** Updates to developer pictures and the about box
|
||||
|
||||
2004-12-19 [mhugent]
|
||||
** providers/ogr/qgsshapefileprovider.cpp: fix for attribute problem
|
||||
in ogr provider
|
||||
2004-12-05 [gsherman] 0.6.0rc2
|
||||
** Fixed bug 1079392 that caused QGIS to crash when a query was entered that
|
||||
resulted in the layer being created with no records
|
||||
** Additional validation of the SQL query was added to the query builder.
|
||||
When Ok is clicked on the builder dialog, the query is sent to the
|
||||
database and the result checked to ensure that it will create a valid
|
||||
PostreSQL layer
|
||||
** Added tr to a number of strings that weren't prepared for translation in
|
||||
the vector dialog properties code
|
||||
** Created QgsDataSourceURI structure to hold all the pertinent information
|
||||
associated with a PostgreSQL layer connection, including host, database,
|
||||
table, geometry column, username, password, port, and sql where clause.
|
||||
|
||||
2004-12-03 [gsherman] 0.6.0rc1
|
||||
** Commented out excessive debug statements in the postgres provider
|
||||
|
||||
2004-12-03 [gsherman] 0.6.0rc1
|
||||
** Changing the SQL query for a PostgreSQL layer using the query builder
|
||||
from the vector layer properties dialog now properly updates the mapcanvas
|
||||
extents and feature count.
|
||||
** Fix for crash in pg buffer plugin (bug 1077412). Crash is due to the
|
||||
addition of sql where clause support in the postgres provider. The provider
|
||||
was not checking to see if a sql key was included in the datasource uri and
|
||||
thus copying the entire URI as the where clause.
|
||||
** The .shp extension is now added the new vector layer name (if not specified
|
||||
by the user). The .qgs extension is now added to a project file when using
|
||||
save or save as (if not specified by the user).
|
||||
|
||||
2004-12-01 [gsherman] 0.5.0devel30
|
||||
** Added functions to qgsdataprovider.h to support updating the feature count
|
||||
and extents. To be supported, these functions must be implemented in the data
|
||||
provider implementation. The default implementations don't do anything useful.
|
||||
** QgsVectorLayer now has functions for requesting feature count, extent
|
||||
update, and the subset defintiion string (usually sql) from the underlying
|
||||
data provider. Providers do not need to implement these functions unless they
|
||||
want to support subsetting the layer via a layer definition query or other
|
||||
means.
|
||||
|
||||
2004-11-27 [larsl] 0.5.0devel30
|
||||
** Fixed feature addition in GPX layers, it now works again
|
||||
|
||||
2004-11-22 [mcoletti] 0.5.0devel29
|
||||
** QgsProject properties now re-designed to be similar to QSettings
|
||||
|
||||
|
||||
2004-11-20 [timlinux] 0.5.0devel28
|
||||
** Added the capability to interrupt the rendering of the currently drawing map
|
||||
layer by pressing the escape key. Repeat and rinse to interrupt drawing of all
|
||||
@ -16,11 +67,11 @@ vector layers. Not implemented for raster layers yet.
|
||||
|
||||
2004-11-11 [gsherman] 0.5.0devel27
|
||||
** First pass at a PostgreSQL query builder. This is not entirely
|
||||
functional yet. Fields for a table are displayed and sample or all
|
||||
values can be displayed. Double-clicking on a field name or sample
|
||||
value pastes it into the sql query box at the current cursor
|
||||
position. The test function is not implemented yet nor is the type
|
||||
checking to allow auto quoting of text values in the sql statement.
|
||||
functional yet. Fields for a table are displayed and sample or all
|
||||
values can be displayed. Double-clicking on a field name or sample
|
||||
value pastes it into the sql query box at the current cursor
|
||||
position. The test function is not implemented yet nor is the type
|
||||
checking to allow auto quoting of text values in the sql statement.
|
||||
|
||||
2004-11-19 [mcoletti] 0.5.devel26
|
||||
** Changed QgsProject properties interface to be more similar to
|
||||
@ -45,8 +96,8 @@ caused by rerendering everything after each change you make.
|
||||
|
||||
2004-11-11 [gsherman] 0.5.0devel22
|
||||
** Added ifdef's for WIN32 around dynamic_casts in the vector renderer
|
||||
dialogs. Even though rtti is enabled, use of dynamic casts causes seg
|
||||
faults under WIN32.
|
||||
dialogs. Even though rtti is enabled, use of dynamic casts causes seg
|
||||
faults under WIN32.
|
||||
|
||||
2004-11-09 [timlinux] 0.5.0devel21
|
||||
** Added options to graticule builder to allow you to define origin and
|
||||
@ -96,7 +147,7 @@ qgis to crash.
|
||||
|
||||
2004-10-20 [mcoletti] 0.5.0devel10
|
||||
** merged in qgsproject-branch
|
||||
|
||||
|
||||
2004-10-19 [larsl] 0.5.0devel9
|
||||
** Changed GPX attribute names from three letter abbreviations to more
|
||||
userfriendly whole words
|
||||
@ -538,20 +589,20 @@ All that remains to do now is sort out syncronisation of layer ordering between
|
||||
** Implemented map overview using maplayers rather than snapshots of a raster layer.
|
||||
|
||||
** Implemented QgsMapLayerRegistry - s singleton object that keeps track of
|
||||
loaded layers. When a layer is added an entry is made in the registry. When a
|
||||
layer is removed, the registry emits a layerWillBeRemoved signal that is
|
||||
connected to any mapvcanvas, legend etc that may be using the layer. The
|
||||
objects using the layer can then remove any reference they make to the layer -
|
||||
after which the registry deletes the layer object.
|
||||
loaded layers. When a layer is added an entry is made in the registry. When a
|
||||
layer is removed, the registry emits a layerWillBeRemoved signal that is
|
||||
connected to any mapvcanvas, legend etc that may be using the layer. The
|
||||
objects using the layer can then remove any reference they make to the layer -
|
||||
after which the registry deletes the layer object.
|
||||
|
||||
** This fixes a problem with adding an overview map which caused qgis to crash
|
||||
when a layer was removed because it was trying to delete the same pointer
|
||||
twice.
|
||||
when a layer was removed because it was trying to delete the same pointer
|
||||
twice.
|
||||
|
||||
** Added a better implementation of the overview map below map legend.
|
||||
|
||||
** Refactoring in qgis app - all private members now adhere to qgis naming
|
||||
conventions (prefixed with m).
|
||||
conventions (prefixed with m).
|
||||
|
||||
|
||||
** Import Note *** ONLY THE MAPLAYER REGISTRY SHOULD DELETE LAYERS NOW ***
|
||||
@ -585,7 +636,7 @@ not need src parameter (this can be obtained from painter->device()).
|
||||
** Added basic print capability to qgis....consider this a work in progress.
|
||||
2004-05-31 [gsherman] 0.3.0devel9
|
||||
**Changed QgsIdentifyResultsBase to inherit from QWidget instead of QDialog
|
||||
so window position can be saved/restored from user settings each time.
|
||||
so window position can be saved/restored from user settings each time.
|
||||
**Changed qgis.h int version number to 300 (should have been done at release)
|
||||
|
||||
2004-05-30 [ts] 0.3.0devel8
|
||||
@ -961,7 +1012,7 @@ Added qgiscommit tool
|
||||
** Fixed a bug in the drawing of pseudocolor single band grayscale images that
|
||||
prevented all class breaks being displayed.
|
||||
|
||||
|
||||
|
||||
2004-03-10 [gs] 0.1.0devel7
|
||||
** Added delimited text plugin which provides gui to add delimited text
|
||||
layers using the delimited_text data provider
|
||||
@ -1161,25 +1212,26 @@ Version 0.0.3-alpha August 10, 2002
|
||||
* Other internal changes
|
||||
|
||||
July 26, 2002
|
||||
Drawing code now properly displays layers and calculates extents when
|
||||
zooming. Zoom is still fixed zoom in rather than interactive.
|
||||
|
||||
Drawing code now properly displays layers and calculates extents when
|
||||
zooming. Zoom is still fixed zoom in rather than interactive.
|
||||
|
||||
July 20, 2002
|
||||
Repaint automatic for layers.
|
||||
|
||||
Repaint automatic for layers.
|
||||
|
||||
July 18, 2002
|
||||
Point, line and polygon PostGis layers can be drawn. Still issues with
|
||||
map exent and positioning of layers on the canvas. Drawing is manual and
|
||||
not tied to the paint event. No zooming or panning yet.
|
||||
|
||||
Point, line and polygon PostGis layers can be drawn. Still issues with
|
||||
map exent and positioning of layers on the canvas. Drawing is manual and
|
||||
not tied to the paint event. No zooming or panning yet.
|
||||
|
||||
July 10, 2002
|
||||
Layers can be selected and added to the map canvas collection however
|
||||
the rendering code is currently disabled and being reorganized. So if
|
||||
you add a layer, nothing will be drawn...
|
||||
|
||||
Layers can be selected and added to the map canvas collection however
|
||||
the rendering code is currently disabled and being reorganized. So if
|
||||
you add a layer, nothing will be drawn...
|
||||
|
||||
July 6, 2002
|
||||
This code is preliminary and really has no true functionality other than
|
||||
the ability to define a PostGIS connection and display the spatially enabled
|
||||
tables that could be loaded.
|
||||
This code is preliminary and really has no true functionality other than
|
||||
the ability to define a PostGIS connection and display the spatially enabled
|
||||
tables that could be loaded.
|
||||
|
||||
This is the initial import of the code base into CVS on Sourceforge.net.
|
||||
This is the initial import of the code base into CVS on Sourceforge.net.
|
||||
vim: set shiftwidth=3 textwidth=75 autoindent:
|
||||
|
@ -24,7 +24,12 @@ EXTRA_DIST = \
|
||||
TODO \
|
||||
update_ts_files.sh
|
||||
|
||||
man1_MANS = qgis.man
|
||||
man1_MANS = qgis.man
|
||||
|
||||
docdatadir = $(datadir)/$(PACKAGE)/doc
|
||||
|
||||
docdata_DATA = AUTHORS
|
||||
|
||||
|
||||
SUBDIRS = src providers plugins doc tools i18n
|
||||
|
||||
|
68
README
@ -1,19 +1,59 @@
|
||||
README for QGIS version 0.5 'Bandit'
|
||||
Quantum GIS (QGIS) is designed to be a Geographic Information System (GIS)
|
||||
built for Linux/Unix. QGIS offers support for vector and raster formats.
|
||||
Currently QGIS supports many common vector and raster formats shapefiles
|
||||
and PostgreSQL/PostGIS layers.
|
||||
README for QGIS version 0.6 'Simon'
|
||||
|
||||
Quantum GIS (QGIS) is an Open Source Geographic Information System. The
|
||||
project was born in May of 2002 and was established as a project on
|
||||
SourceForge in June of the same year. We've worked hard to make GIS
|
||||
software (which is traditionaly expensive commerical software) a viable
|
||||
prospect for anyone with basic access to a Personal Computer. QGIS
|
||||
currently runs on most Unix platforms, Window, and OS X. QGIS is
|
||||
developed using the Qt toolkit (http://www.trolltech.com) and C++. This
|
||||
means that QGIS feels snappy to use and has a pleasing, easy to use
|
||||
graphical user interface.
|
||||
|
||||
QGIS aims to be an easy to use GIS, providing common functions and
|
||||
features. The initial goal was to provide a GIS data viewer. QGIS has
|
||||
reached that point in its evolution and is being used by many for their
|
||||
daily GIS data viewing needs. QGIS supports a number of raster and
|
||||
vector data formats, with new support easily added using the plugin
|
||||
architecture.
|
||||
|
||||
QGIS is released under the GNU Public License (GPL). Devloping QGIS
|
||||
under this license means that you can (if you want to) inspect and
|
||||
modify the source code and guarantees that you, our happy user will
|
||||
always have access to a GIS program that is free of cost and can be
|
||||
freely modified.
|
||||
|
||||
This release adds:
|
||||
* Windows version
|
||||
* Feature labeling with optional buffering
|
||||
* Preliminary digitizing support for shapefiles
|
||||
* GRASS digitizing support
|
||||
* GPS SVG icons
|
||||
* Unique value renderers
|
||||
* User interface improvements
|
||||
* Specify a query when loading a PostGIS layer
|
||||
* Italian translation
|
||||
* GEOS support in the OGR provider to refine selection of features
|
||||
via identify. This improves over the previous method of feature
|
||||
selection which used a simple MBR intersection check.
|
||||
* PostGIS editing support in provider
|
||||
* Vector dialog redesign to improve usability
|
||||
* Improvement in project handling (loading and saving)
|
||||
* Scale dependent rendering
|
||||
* User option to load layers with out drawing them, thus allowing
|
||||
you to set scale dependency, etc without waiting for the initial draw to
|
||||
complete
|
||||
* Interrupt drawing of features by hitting ESC
|
||||
* Attribute actions - the ability to run an external program based
|
||||
on the contents of an attribute field in a layer
|
||||
* Create new vector layer (shapefile) for editing
|
||||
* Windows installer
|
||||
* Mac OSX binary
|
||||
* New options in the graticule builder plugin
|
||||
* Enhancements to the GPS plugin
|
||||
* Man page
|
||||
* Save delimited text as shapefile
|
||||
* Improved Delimited Text plugin, including preview of text file
|
||||
* Improved SPIT handling of PostgreSQL reserved words and shapefiles
|
||||
with multiple geometry types
|
||||
* Display SQL query used to create a PostGIS layer
|
||||
* PostgreSQL query builder
|
||||
* Ability to redefine the query used for PostgreSQL layers from the
|
||||
layer properties dialog
|
||||
* North arrow, scalebar, and copyright plugins save their state in
|
||||
the project file
|
||||
* Datasets with UTF8, Kanjii and CJK filenames now load properly
|
||||
|
||||
Supported raster formats include:
|
||||
Grass
|
||||
|
11
configure.in
@ -24,9 +24,9 @@ dnl ---------------------------------------------------------------------------
|
||||
dnl version number
|
||||
dnl ---------------------------------------------------------------------------
|
||||
MAJOR_VERSION=0
|
||||
MINOR_VERSION=5
|
||||
MINOR_VERSION=6
|
||||
MICRO_VERSION=0
|
||||
EXTRA_VERSION=30
|
||||
EXTRA_VERSION=0
|
||||
if test $EXTRA_VERSION -eq 0; then
|
||||
VERSION=${MAJOR_VERSION}.${MINOR_VERSION}.${MICRO_VERSION}
|
||||
else
|
||||
@ -119,6 +119,7 @@ if test x"$PG_CONFIG" != "xno" ; then
|
||||
[Define to 1 if PostgreSQL is available])
|
||||
ac_postgresql="yes"
|
||||
ac_postgresql_version=`$PG_CONFIG --version | sed -e 's#PostgreSQL ##'`
|
||||
postgresql_version_string="(Version $ac_postgresql_version)"
|
||||
else
|
||||
ac_postgresql="no"
|
||||
fi
|
||||
@ -174,6 +175,9 @@ AC_ARG_WITH(grass,
|
||||
|
||||
if test -n "$with_grass" -a x"$with_grass" != "xno"; then
|
||||
# I don't know how to add library path to AC_CHECK_LIB()
|
||||
if test ! -f "$GISLIB"; then
|
||||
GISLIB=`ls $with_grass/lib/libgrass_gis.dylib 2> /dev/null`
|
||||
fi
|
||||
if test ! -f "$GISLIB"; then
|
||||
GISLIB=`ls $with_grass/lib/libgrass_gis.so 2> /dev/null`
|
||||
fi
|
||||
@ -246,6 +250,7 @@ AC_CONFIG_FILES([
|
||||
src/images/north_arrows/Makefile
|
||||
src/images/splash/Makefile
|
||||
src/images/icons/Makefile
|
||||
src/images/developers/Makefile
|
||||
src/themes/Makefile
|
||||
src/themes/default/Makefile
|
||||
providers/Makefile
|
||||
@ -288,7 +293,7 @@ echo "$PACKAGE $VERSION"
|
||||
echo "------------------------------------------"
|
||||
echo "GDAL/OGR : $ac_gdalogr (Version $ac_gdalogr_version)"
|
||||
echo "GEOS : $ac_geos (Version $ac_geos_version)"
|
||||
echo "PostgreSQL : $ac_postgresql (Version $ac_postgresql_version)"
|
||||
echo "PostgreSQL : $ac_postgresql $postgresql_version_string"
|
||||
echo "GRASS : $ac_grass"
|
||||
echo "SPIT : $ac_spit"
|
||||
echo ""
|
||||
|
Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 19 KiB |
@ -10,7 +10,7 @@
|
||||
</td>
|
||||
<td valign="center">
|
||||
<span class="header">Quantum GIS Documentation</span><br>
|
||||
<span class="subheader">Version 0.5 <i>Bandit</i></span>
|
||||
<span class="subheader">Version 0.6 <i>Simon</i></span>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
@ -18,25 +18,42 @@
|
||||
<a href="userguide.pdf" class="bar">User Guide</a><br>
|
||||
<!-- This documentation describes the Quantum GIS (QGIS) application. More
|
||||
information on QGIS is available on the web page at http://qgis.org. -->
|
||||
<h2>Whats new in Version 0.5</h2>
|
||||
Version 0.5 of QGIS contains a number of new features:
|
||||
<h2>Whats new in Version 0.6</h2>
|
||||
<table>
|
||||
<tr>
|
||||
<td>
|
||||
<td valign="top" width="50%">
|
||||
<ul class="small">
|
||||
<li>Windows version
|
||||
<li>Feature labeling with optional buffering
|
||||
<li>Preliminary digitizing support for shapefiles
|
||||
<li>GRASS digitizing support
|
||||
<li>GPS SVG icons
|
||||
<li> GEOS support to improve the method of feature
|
||||
<li> PostGIS editing support in provider
|
||||
<li> Vector dialog redesign to improve usability
|
||||
<li> Improvement in project handling (loading and saving)
|
||||
<li> Scale dependent rendering
|
||||
<li> User option to load layers with out drawing them, thus allowing
|
||||
you to set scale dependency, etc without waiting for the initial draw to
|
||||
complete
|
||||
<li> Interrupt drawing of features by hitting ESC
|
||||
<li> Attribute actions - the ability to run an external program based
|
||||
on the contents of an attribute field in a layer
|
||||
<li> Create new vector layer (shapefile) for editing
|
||||
<li> Windows installer
|
||||
<li> Mac OSX binary
|
||||
</ul>
|
||||
<td>
|
||||
<td valign="top">
|
||||
<ul class="small">
|
||||
<li>Unique value renderers
|
||||
<li>User interface improvements
|
||||
<li>Specify a query when loading a PostGIS layer
|
||||
<li>Italian translation
|
||||
<td valign="top" width="50%">
|
||||
<ul class="small">
|
||||
<li> New options in the graticule builder plugin
|
||||
<li> Enhancements to the GPS plugin
|
||||
<li> Man page
|
||||
<li> Save delimited text as shapefile
|
||||
<li> Improved Delimited Text plugin, including preview of text file
|
||||
<li> Improved SPIT handling of PostgreSQL reserved words and shapefiles
|
||||
with multiple geometry types
|
||||
<li> Display SQL query used to create a PostGIS layer
|
||||
<li> PostgreSQL query builder
|
||||
<li> Ability to redefine the query used for PostgreSQL layers from the
|
||||
layer properties dialog
|
||||
<li> North arrow, scalebar, and copyright plugins save their state in
|
||||
the project file
|
||||
<li> Datasets with UTF8, Kanjii and CJK filenames now load properly
|
||||
</ul>
|
||||
</td>
|
||||
</tr>
|
||||
|
BIN
doc/install.pdf
@ -12,6 +12,7 @@ docdatadir = $(datadir)/$(PACKAGE)/doc/install_guide
|
||||
|
||||
docdata_DATA = \
|
||||
contents.png \
|
||||
CVS \
|
||||
index.html \
|
||||
install.css \
|
||||
install.html \
|
||||
@ -19,33 +20,11 @@ docdata_DATA = \
|
||||
labels.pl \
|
||||
next_g.png \
|
||||
next.png \
|
||||
node10.html \
|
||||
node11.html \
|
||||
node12.html \
|
||||
node13.html \
|
||||
node14.html \
|
||||
node15.html \
|
||||
node16.html \
|
||||
node17.html \
|
||||
node18.html \
|
||||
node19.html \
|
||||
node1.html \
|
||||
node20.html \
|
||||
node2.html \
|
||||
node3.html \
|
||||
node4.html \
|
||||
node5.html \
|
||||
node6.html \
|
||||
node7.html \
|
||||
node8.html \
|
||||
node9.html \
|
||||
nx_grp_g.png \
|
||||
prev_g.png \
|
||||
prev.png \
|
||||
up_g.png \
|
||||
up.png \
|
||||
WARNINGS
|
||||
|
||||
up.png
|
||||
# generated by ls -1 | sed -e '/CVS/d' -e '/Makefile/d' -e 's#\(.*\)# \1 \\#'
|
||||
|
||||
EXTRA_DIST = $(docdata_DATA)
|
||||
|
@ -19,27 +19,9 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
|
||||
<LINK REL="STYLESHEET" HREF="install.css">
|
||||
|
||||
<LINK REL="next" HREF="node1.html">
|
||||
</HEAD>
|
||||
|
||||
<BODY >
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html20"
|
||||
HREF="node1.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up_g.png">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev_g.png">
|
||||
<A NAME="tex2html18"
|
||||
HREF="node1.html">
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html21"
|
||||
HREF="node1.html">Contents</A>
|
||||
<B> <A NAME="tex2html19"
|
||||
HREF="node1.html">Contents</A></B>
|
||||
<BR>
|
||||
<BR>
|
||||
<!--End of Navigation Panel-->
|
||||
|
||||
<P>
|
||||
|
||||
@ -47,62 +29,625 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
<H1 ALIGN=CENTER>Building and Installing QGIS</H1>
|
||||
<P ALIGN=CENTER><STRONG>Gary Sherman - Tim Sutton</STRONG></P>
|
||||
<P ALIGN=LEFT></P>
|
||||
<BR><HR>
|
||||
<!--Table of Child-Links-->
|
||||
<A NAME="CHILD_LINKS"></A>
|
||||
<BR>
|
||||
|
||||
<H2><A NAME="SECTION00010000000000000000">
|
||||
Contents</A>
|
||||
</H2>
|
||||
<!--Table of Contents-->
|
||||
|
||||
<UL>
|
||||
<LI><A NAME="tex2html22"
|
||||
HREF="node1.html">Contents</A>
|
||||
<LI><A NAME="tex2html23"
|
||||
HREF="node2.html">Introduction</A>
|
||||
<LI><A NAME="tex2html24"
|
||||
HREF="node3.html">Getting QGIS</A>
|
||||
<LI><A NAME="tex2html25"
|
||||
HREF="node4.html">PostgreSQL</A>
|
||||
<LI><A NAME="tex2html26"
|
||||
HREF="node5.html">GEOS</A>
|
||||
<LI><A NAME="tex2html27"
|
||||
HREF="node6.html">PostGIS</A>
|
||||
<LI><A NAME="tex2html28"
|
||||
HREF="node7.html">GRASS</A>
|
||||
<LI><A NAME="tex2html29"
|
||||
HREF="node8.html">GDAL/OGR</A>
|
||||
<LI><A NAME="tex2html30"
|
||||
HREF="node9.html">Qt</A>
|
||||
<LI><A NAME="tex2html31"
|
||||
HREF="node10.html">Building QGIS</A>
|
||||
<LI><A NAME="tex2html41"
|
||||
HREF="install.html#SECTION00020000000000000000">Introduction</A>
|
||||
<UL>
|
||||
<LI><A NAME="tex2html32"
|
||||
HREF="node11.html">Quick and Dirty</A>
|
||||
<LI><A NAME="tex2html33"
|
||||
HREF="node12.html">Configuring QGIS the Right Way</A>
|
||||
<UL>
|
||||
<LI><A NAME="tex2html34"
|
||||
HREF="node13.html">Qt</A>
|
||||
<LI><A NAME="tex2html35"
|
||||
HREF="node14.html">GDAL</A>
|
||||
<LI><A NAME="tex2html36"
|
||||
HREF="node15.html">PostgreSQL</A>
|
||||
<LI><A NAME="tex2html37"
|
||||
HREF="node16.html">GRASS</A>
|
||||
<LI><A NAME="tex2html38"
|
||||
HREF="node17.html">Example Use of Configure</A>
|
||||
<LI><A NAME="tex2html39"
|
||||
HREF="node18.html">Compiling and Installing QGIS</A>
|
||||
</UL>
|
||||
<LI><A NAME="tex2html42"
|
||||
HREF="install.html#SECTION00021000000000000000">Installing Windows Version</A>
|
||||
<LI><A NAME="tex2html43"
|
||||
HREF="install.html#SECTION00022000000000000000">Installing Mac OSX Version</A>
|
||||
<LI><A NAME="tex2html44"
|
||||
HREF="install.html#SECTION00023000000000000000">Building from Source</A>
|
||||
</UL>
|
||||
<BR>
|
||||
<LI><A NAME="tex2html40"
|
||||
HREF="node19.html">Building Plugins</A>
|
||||
<LI><A NAME="tex2html41"
|
||||
HREF="node20.html">About this document ...</A>
|
||||
<LI><A NAME="tex2html45"
|
||||
HREF="install.html#SECTION00030000000000000000">Getting QGIS</A>
|
||||
<LI><A NAME="tex2html46"
|
||||
HREF="install.html#SECTION00040000000000000000">PostgreSQL</A>
|
||||
<LI><A NAME="tex2html47"
|
||||
HREF="install.html#SECTION00050000000000000000">GEOS</A>
|
||||
<LI><A NAME="tex2html48"
|
||||
HREF="install.html#SECTION00060000000000000000">PostGIS</A>
|
||||
<LI><A NAME="tex2html49"
|
||||
HREF="install.html#SECTION00070000000000000000">GRASS</A>
|
||||
<LI><A NAME="tex2html50"
|
||||
HREF="install.html#SECTION00080000000000000000">GDAL/OGR</A>
|
||||
<LI><A NAME="tex2html51"
|
||||
HREF="install.html#SECTION00090000000000000000">Qt</A>
|
||||
<LI><A NAME="tex2html52"
|
||||
HREF="install.html#SECTION000100000000000000000">Building QGIS</A>
|
||||
<UL>
|
||||
<LI><A NAME="tex2html53"
|
||||
HREF="install.html#SECTION000101000000000000000">Quick and Dirty</A>
|
||||
<LI><A NAME="tex2html54"
|
||||
HREF="install.html#SECTION000102000000000000000">Configuring QGIS the Right Way</A>
|
||||
</UL>
|
||||
<!--End of Table of Child-Links-->
|
||||
<BR>
|
||||
<LI><A NAME="tex2html55"
|
||||
HREF="install.html#SECTION000110000000000000000">Building Plugins</A>
|
||||
</UL>
|
||||
<!--End of Table of Contents-->
|
||||
|
||||
<P>
|
||||
|
||||
|
||||
<P>
|
||||
|
||||
<H1><A NAME="SECTION00020000000000000000"></A><A NAME="label_introduction"></A>
|
||||
<BR>
|
||||
Introduction
|
||||
</H1>
|
||||
This document briefly describes how to build QGIS 0.6 (<I>`Simon'</I>) from the source distribution. These instructions are for Linux/Unix and other POSIX systems which have the required build environment.
|
||||
|
||||
<P>
|
||||
The latest version of this document can always be found at <TT><A NAME="tex2html1"
|
||||
HREF="http://qgis.org/docs/install.html">http://qgis.org/docs/install.html</A></TT>.
|
||||
|
||||
<H2><A NAME="SECTION00021000000000000000">
|
||||
Installing Windows Version</A>
|
||||
</H2>
|
||||
Installing the Windows version of QGIS is simply a matter of running the user friendly setup wizard. See the README.WIN32 file for additional information regarding the Windows version of QGIS. At version 0.6, the GRASS plugin is not available in Windows.
|
||||
|
||||
<H2><A NAME="SECTION00022000000000000000">
|
||||
Installing Mac OSX Version</A>
|
||||
</H2>
|
||||
To install the compressed disk image containing the OSX version of QGIS,
|
||||
double-click to expand and mount the image, then drag QGIS application to your
|
||||
hard drive. The OSX version does not include GRASS support.
|
||||
|
||||
<P>
|
||||
|
||||
<H2><A NAME="SECTION00023000000000000000">
|
||||
Building from Source</A>
|
||||
</H2>
|
||||
The remainder of this document deals with compiling and installing QGIS from the
|
||||
source code. Specifically this applies to Linux/Unix systems.
|
||||
|
||||
<P>
|
||||
QGIS can be installed with three levels of support for data stores:
|
||||
|
||||
<OL>
|
||||
<LI>Basic raster and vector support (GDAL and OGR formats)
|
||||
</LI>
|
||||
<LI>PostreSQL/GEOS/PostGIS
|
||||
</LI>
|
||||
<LI>GRASS raster and vector support
|
||||
</LI>
|
||||
</OL>
|
||||
|
||||
<P>
|
||||
Basic support uses the GDAL/OGR libraries and supports many raster and vector formats. For more information on the available formats, see <TT><A NAME="tex2html2"
|
||||
HREF="http://www.remotesensing.org:16080/gdal/formats_list.html">http://www.remotesensing.org:16080/gdal/formats_list.html</A></TT> and <TT><A NAME="tex2html3"
|
||||
HREF="http://www.remotesensing.org:16080/gdal/ogr/ogr_formats.html">http://www.remotesensing.org:16080/gdal/ogr/ogr_formats.html</A></TT>.
|
||||
|
||||
<P>
|
||||
PostgreSQL/PostGIS support allows you to store spatial data in a PostgreSQL database. GRASS support provides access to GRASS mapsets.
|
||||
|
||||
<P>
|
||||
<B>Note:</B> - If you plan to build QGIS with GRASS support, version 1.2.3 or higher of GDAL must be used.
|
||||
|
||||
<P>
|
||||
Each of the requirements are discussed below. Note that the information given below is abstracted from the installation documentation for each of the libraries. See the install information for each library to get detailed instructions. In the documentation below, the file names and versions used are examples.
|
||||
|
||||
<P>
|
||||
If you are building QGIS without PostgreSQL or GRASS support, skip to the section on Installing GDAL/OGR.
|
||||
|
||||
<H1><A NAME="SECTION00030000000000000000">
|
||||
Getting QGIS</A>
|
||||
</H1>
|
||||
QGIS is available in both source and package format from <TT><A NAME="tex2html4"
|
||||
HREF="http://qgis.org">http://qgis.org</A></TT>.
|
||||
|
||||
<P>
|
||||
In addition, packages for many Linux distributions are independently maintained in various locations. See
|
||||
the <I>Download</I> section on <TT><A NAME="tex2html5"
|
||||
HREF="http://qgis.org">http://qgis.org</A></TT> for the latest information on package locations.
|
||||
|
||||
<P>
|
||||
Packages for most of the software/libraries discussed below can be found for almost all Linux distributions. While it is possible to mix compiling from source and installing packages to meet the requirements for QGIS, sometimes this becomes tricky. Following the steps below will generally ensure a successful installation. If you are using SuSE 9.1, the LinGIS distribution <TT><A NAME="tex2html6"
|
||||
HREF="ftp://ftp.lingis.org">ftp://ftp.lingis.org</A></TT> is a good choice for installing QGIS and its dependencies.
|
||||
|
||||
<P>
|
||||
|
||||
<H1><A NAME="SECTION00040000000000000000">
|
||||
PostgreSQL</A>
|
||||
</H1>
|
||||
QGIS uses the latest features of PostgreSQL. For this reason, version 7.4.x or higher is recommended with QGIS version 0.5. If you choose to add PostgreSQL, you must also install PostGIS and the GEOS library (see below).
|
||||
|
||||
<OL>
|
||||
<LI>Download PostgreSQL source from www.postgresql.org
|
||||
</LI>
|
||||
<LI>Extract the source
|
||||
<PRE>
|
||||
tar -xzf postgresql-7.4.1.tar.gz
|
||||
</PRE>
|
||||
|
||||
<P>
|
||||
</LI>
|
||||
<LI>Change to the source directory
|
||||
<PRE>
|
||||
cd postgresql-7.4.1
|
||||
</PRE>
|
||||
|
||||
<P>
|
||||
</LI>
|
||||
<LI>Configure PostgreSQL:
|
||||
<PRE>
|
||||
./configure --prefix=/usr/local/pgsql
|
||||
</PRE>
|
||||
|
||||
<P>
|
||||
</LI>
|
||||
<LI>Build
|
||||
<PRE>
|
||||
make
|
||||
</PRE>
|
||||
|
||||
<P>
|
||||
</LI>
|
||||
<LI>Install
|
||||
<PRE>
|
||||
make install
|
||||
</PRE>
|
||||
|
||||
<P>
|
||||
</LI>
|
||||
<LI>As root, create the postgres user and setup the database (following taken from PostgreSQL INSTALL file with modification)
|
||||
|
||||
<UL>
|
||||
<LI>Create the postgres user
|
||||
<PRE>
|
||||
adduser postgres
|
||||
</PRE>
|
||||
|
||||
<P>
|
||||
</LI>
|
||||
<LI>Create the directory for the PostgreSQL database
|
||||
<PRE>
|
||||
mkdir /usr/local/pgsql/data
|
||||
</PRE>
|
||||
|
||||
<P>
|
||||
</LI>
|
||||
<LI>Change ownership of the data directory to the postgres user
|
||||
<PRE>
|
||||
chown postgres /usr/local/pgsql/data
|
||||
</PRE>
|
||||
|
||||
<P>
|
||||
</LI>
|
||||
<LI>su to the postgres user (or login as postgres)
|
||||
<PRE>
|
||||
su - postgres
|
||||
</PRE>
|
||||
|
||||
<P>
|
||||
</LI>
|
||||
<LI>Change to the PostgreSQL install directory
|
||||
<PRE>
|
||||
cd /usr/local/pgsql
|
||||
</PRE>
|
||||
|
||||
<P>
|
||||
</LI>
|
||||
<LI>Initialize the database
|
||||
<PRE>
|
||||
./bin/initdb -D /usr/local/pgsql/data
|
||||
</PRE>
|
||||
|
||||
<P>
|
||||
</LI>
|
||||
<LI>Start the PostgreSQL daemon
|
||||
<FONT SIZE="-1"> </FONT><PRE>
|
||||
./bin/pg_ctl start -o "-i" -D /usr/local/pgsql/data -l /home/postgres/serverlog
|
||||
</PRE><FONT SIZE="-1">
|
||||
</FONT>
|
||||
<P>
|
||||
<FONT SIZE="-1">
|
||||
</LI>
|
||||
<LI>Create the test database
|
||||
</FONT>
|
||||
<P>
|
||||
<PRE>
|
||||
./bin/createdb test
|
||||
</PRE><FONT SIZE="-1">
|
||||
</FONT>
|
||||
</LI>
|
||||
</UL>
|
||||
</LI>
|
||||
<LI>PostgreSQL should now be running. Logon as the postgres user (or use su - postgres). You should be able to connect to the test database and execute a test query with the following commands:
|
||||
|
||||
<P>
|
||||
<PRE>
|
||||
psql test
|
||||
select version();
|
||||
version
|
||||
-------------------------------------------------------------------------------------
|
||||
PostgreSQL 7.4.1 on i686-pc-linux-gnu, compiled by GCC gcc (GCC) 3.3.1 (SuSE Linux)
|
||||
(1 row)
|
||||
|
||||
\q
|
||||
</PRE>
|
||||
|
||||
<P>
|
||||
</LI>
|
||||
<LI>PostgreSQL install is done
|
||||
|
||||
</LI>
|
||||
</OL>
|
||||
|
||||
<P>
|
||||
|
||||
<H1><A NAME="SECTION00050000000000000000">
|
||||
GEOS</A>
|
||||
</H1>
|
||||
|
||||
<P>
|
||||
<B>Note:</B> As of version 0.6, GEOS is a requirement in order to build QGIS.
|
||||
|
||||
<P>
|
||||
QGIS uses GEOS to properly fetch features from the the underlying datastore
|
||||
when doing an identify or select operation.
|
||||
|
||||
<P>
|
||||
To install GEOS:
|
||||
|
||||
<OL>
|
||||
<LI>Download GEOS source from <TT><A NAME="tex2html7"
|
||||
HREF="http://geos.refractions.net">http://geos.refractions.net</A></TT>
|
||||
</LI>
|
||||
<LI>Untar GEOS
|
||||
<PRE>
|
||||
tar -xzf geos-2.0.0.tar.gz
|
||||
</PRE>
|
||||
</LI>
|
||||
<LI>Change to the GEOS source dir
|
||||
<PRE>
|
||||
cd geos-2.0-.0
|
||||
</PRE>
|
||||
</LI>
|
||||
<LI>Follow the instructions in the GEOS README file to complete the installation. Typically the install goes like this:
|
||||
<PRE>
|
||||
./configure
|
||||
make
|
||||
make install
|
||||
</PRE>
|
||||
|
||||
<P>
|
||||
</LI>
|
||||
</OL>
|
||||
|
||||
<P>
|
||||
|
||||
<H1><A NAME="SECTION00060000000000000000">
|
||||
PostGIS</A>
|
||||
</H1>
|
||||
|
||||
<P>
|
||||
NOTE - You must edit the PostGIS Makefile and make sure that USE_GEOS=1 is
|
||||
set. Also adjust GEOS_DIR to point to your GEOS installation directory.
|
||||
|
||||
<OL>
|
||||
<LI>Download PostGIS source from <TT><A NAME="tex2html8"
|
||||
HREF="http://postgis.refractions.net">http://postgis.refractions.net</A></TT>
|
||||
|
||||
<P>
|
||||
</LI>
|
||||
<LI>Untar PostGIS into the contrib subdirectory of the postgresql build directory. The contrib subdirectory is located in the directory created in step 3 of the PostgreSQL installation process.
|
||||
</LI>
|
||||
<LI>Change to the postgis subdirectory
|
||||
</LI>
|
||||
<LI>Edit the Makefile to enable GEOS support (see the note above)
|
||||
</LI>
|
||||
<LI>PostGIS provides a manual in the doc/html subdirectory that explains the build process (see the Installation section)
|
||||
</LI>
|
||||
<LI>The quick and dirty steps to install PostGIS are:
|
||||
<PRE>
|
||||
cd contrib
|
||||
gunzip postgis-0.8.0.tar.gz
|
||||
tar xvf postgis-0.8.0.tar
|
||||
cd postgis-0.8.0
|
||||
make
|
||||
make install
|
||||
createlang plpgsql yourtestdatabase
|
||||
psql -d yourtestdatabase -f postgis.sql
|
||||
psql -d yourtestdatabase -f spatial_ref_sys.sql
|
||||
</PRE>
|
||||
</LI>
|
||||
</OL>
|
||||
The <B>better way</B> to install PostGIS is to carefully follow the instructions in the PostGIS manual in the doc/html subdirectory or the online manual at <TT><A NAME="tex2html9"
|
||||
HREF="http://postgis.refractions.net/docs">http://postgis.refractions.net/docs</A></TT>
|
||||
<P>
|
||||
|
||||
<H1><A NAME="SECTION00070000000000000000">
|
||||
GRASS</A>
|
||||
</H1>
|
||||
If you want QGIS to support GRASS vector and raster layers, you must build GRASS prior to proceeding.
|
||||
Follow the directions on the GRASS website carefully to build version 5.7. Additional information and the build instructions can be found at <TT><A NAME="tex2html10"
|
||||
HREF="http://grass.itc.it">http://grass.itc.it</A></TT>.
|
||||
|
||||
<P>
|
||||
The GRASS software is available for download at <TT><A NAME="tex2html11"
|
||||
HREF="http://grass.itc.it/download.html">http://grass.itc.it/download.html</A></TT>.
|
||||
|
||||
<P>
|
||||
|
||||
<H1><A NAME="SECTION00080000000000000000">
|
||||
GDAL/OGR</A>
|
||||
</H1>
|
||||
The GDAL and OGR libraries provide support for raster and vector data formats. QGIS makes use of both of these libraries (which come bundled in one distribution).
|
||||
|
||||
<P>
|
||||
Note: A Linux binary of GDAL is available at <TT><A NAME="tex2html12"
|
||||
HREF="http://www.remotesensing.org/gdal">http://www.remotesensing.org/gdal</A></TT>. If you choose to install the binary you will also need to download and unpack the source tree since QGIS needs the header files in order to compile.
|
||||
|
||||
<P>
|
||||
To install GDAL/OGR from source:
|
||||
|
||||
<OL>
|
||||
<LI>Download the GDAL distribution from <TT><A NAME="tex2html13"
|
||||
HREF="http://www.remotesensing.org/gdal">http://www.remotesensing.org/gdal</A></TT>. You should use version 1.1.9 or higher. Versions prior to 1.1.9 contained a bug that caused problems when a null feature was encountered. If you want to build vector support for GRASS, you must use GDAL 1.2.3.
|
||||
|
||||
<P>
|
||||
</LI>
|
||||
<LI>Untar the distribution
|
||||
<PRE>
|
||||
tar xfvz /../path/../gdal-x.x.x.tar.gz
|
||||
</PRE>
|
||||
|
||||
<P>
|
||||
</LI>
|
||||
<LI>Change to the gdal-x.x.x subdirectory that was created by step 2
|
||||
<PRE>
|
||||
cd gdal-x.x.x
|
||||
</PRE>
|
||||
|
||||
<P>
|
||||
</LI>
|
||||
<LI>Configure GDAL
|
||||
<PRE>
|
||||
./configure
|
||||
</PRE>
|
||||
or if you want GRASS support
|
||||
<PRE>
|
||||
./configure --with-grass=<full path to grass install>
|
||||
</PRE>
|
||||
Depending on the GDAL version you are building, it may be necessary to specify -without-ogdi when running configure if you don't have the OGDI libary avaiable on your system.
|
||||
|
||||
<P>
|
||||
</LI>
|
||||
<LI>Build and install GDAL:
|
||||
<PRE>
|
||||
make
|
||||
su
|
||||
make install
|
||||
</PRE>
|
||||
|
||||
<P>
|
||||
</LI>
|
||||
<LI>In order to run GDAL after installing it is necessary for the shared
|
||||
library to be findable. This can often be accomplished by setting
|
||||
LD_LIBRARY_PATH to include /usr/local/lib. On Linux, you can add
|
||||
/usr/local/lib (or whatever path you used for installing GDAL) to
|
||||
/etc/ld.so.conf and run ldconfig as root.
|
||||
|
||||
<P>
|
||||
</LI>
|
||||
<LI>Make sure that gdal-config (found in the bin subdirectory where GDAL was installed) is included in the PATH. If necessary, add the path to gdal-config to the PATH environment variable.
|
||||
<PRE>
|
||||
export PATH=/../path/../gdal-config:$PATH
|
||||
</PRE>
|
||||
|
||||
<P>
|
||||
</LI>
|
||||
<LI>Check the install by running:
|
||||
<PRE>
|
||||
gdal-config --prefix
|
||||
</PRE>
|
||||
|
||||
<P>
|
||||
</LI>
|
||||
</OL>
|
||||
|
||||
<P>
|
||||
If you've had problems during the installation, refer to this manual, where the whole process is described with some more detail: <TT><A NAME="tex2html14"
|
||||
HREF="http://www.remotesensing.org/gdal/gdal_building.html">http://www.remotesensing.org/gdal/gdal_building.html</A></TT>
|
||||
|
||||
<P>
|
||||
|
||||
<H1><A NAME="SECTION00090000000000000000">
|
||||
Qt</A>
|
||||
</H1>
|
||||
Qt 3.1.2 or higher is required in order to compile QGIS. You may already have Qt on your system. If so, check to see if you have version 3.1.2 or later. You can check the Qt version using the find command:
|
||||
<PRE>
|
||||
find ./ -name qglobal.h 2>/dev/null | xargs grep QT_VERSION_STR
|
||||
</PRE>
|
||||
If you have the locate utility installed you can do the same more quickly using:
|
||||
<PRE>
|
||||
locate qglobal.h | xargs grep QT_VERSION_STR
|
||||
</PRE>
|
||||
In either case the result should look something like this:
|
||||
<PRE>
|
||||
#define QT_VERSION_STR "3.3.1"
|
||||
</PRE>
|
||||
In the example above, Qt 3.3.1 is installed.
|
||||
|
||||
<P>
|
||||
If Qt is not installed, you will have to install the Qt development package for your distribution. If you are not able to install the required Qt packages, you will have to build from source.
|
||||
|
||||
<P>
|
||||
To install Qt from source:
|
||||
|
||||
<OL>
|
||||
<LI>Download Qt from <TT><A NAME="tex2html15"
|
||||
HREF="http://www.trolltech.com/developer">http://www.trolltech.com/developer</A></TT> (choose the Qt/X11 Free Edition)
|
||||
</LI>
|
||||
<LI>Unpack the distribution
|
||||
</LI>
|
||||
<LI>Follow directions provided in the distribution directory (doc/html/install-x11.html)
|
||||
</LI>
|
||||
<LI>Use whatever configure options you like but make sure you include -thread for use with QGIS. You can configure Qt with minimal options:
|
||||
<PRE>
|
||||
./configure -thread
|
||||
</PRE>
|
||||
|
||||
<P>
|
||||
</LI>
|
||||
<LI>Complete the installation per the instructions provided in the Qt documentation (see step 3)
|
||||
|
||||
</LI>
|
||||
</OL>
|
||||
|
||||
<P>
|
||||
|
||||
<H1><A NAME="SECTION000100000000000000000">
|
||||
Building QGIS</A>
|
||||
</H1>
|
||||
|
||||
<P>
|
||||
After you have installed the required libraries, you are ready to build QGIS. Download and untar the QGIS distribution and change to the QGIS source directory. You have two options for building and installing QGIS: <B>Quick and Dirty</B> and the <B>right way</B>.
|
||||
|
||||
<H2><A NAME="SECTION000101000000000000000">
|
||||
Quick and Dirty</A>
|
||||
</H2>
|
||||
If you don't need PostgreSQL support and have installed GDAL ,
|
||||
you can configure and build QGIS by changing to the distribution directory
|
||||
and typing:
|
||||
<PRE>./configure
|
||||
make
|
||||
make install
|
||||
</PRE>
|
||||
The above assumes that the gdal-config program is in your PATH
|
||||
See the next section for the full configuration instructions.
|
||||
|
||||
<H2><A NAME="SECTION000102000000000000000">
|
||||
Configuring QGIS the Right Way</A>
|
||||
</H2>
|
||||
To see the configure options available, change the the QGIS
|
||||
directory and enter:
|
||||
<PRE>
|
||||
./configure --help
|
||||
</PRE>
|
||||
Among other options, there are three that are important to
|
||||
the success of the build:
|
||||
<PRE>
|
||||
--with-qtdir=DIR Qt installation directory default=$QTDIR
|
||||
--with-gdal=path/gdal-config Full path to 'gdal-config' script,
|
||||
e.g. '--with-gdal=/usr/local/bin/gdal-config'
|
||||
--with-pg=path/pg_config PostgreSQL (PostGIS) Support
|
||||
(full path to pg_config)
|
||||
--with-grass=DIR GRASS Support (full path to GRASS binary package)
|
||||
</PRE>
|
||||
|
||||
<P>
|
||||
|
||||
<H3><A NAME="SECTION000102100000000000000">
|
||||
Qt</A>
|
||||
</H3>
|
||||
The configure script will detect Qt, unless it is installed in a
|
||||
non-standard location. Setting the QTDIR environment variable will
|
||||
make ensure that the detection succeeds. You can also specify the
|
||||
path using the -with-qtdir option.
|
||||
|
||||
<H3><A NAME="SECTION000102200000000000000">
|
||||
GDAL</A>
|
||||
</H3>
|
||||
If the gdal-config script is in the PATH, configure will automatically
|
||||
detect and configure GDAL support. If not in the path, you can specify
|
||||
the full path to gdal-config using the -with-gdal option. For example:
|
||||
<PRE>
|
||||
/configure --with-gdal=/usr/mystuff/bin/gdal-config
|
||||
</PRE>
|
||||
<H3><A NAME="SECTION000102300000000000000">
|
||||
PostgreSQL</A>
|
||||
</H3>
|
||||
If the pg_config script is in the PATH, configure will automatically
|
||||
detect and configure PostgreSQL support. If not, you can use the
|
||||
-with-pg option to specify the full path to pg_config. For example:
|
||||
<PRE>
|
||||
./configure --with-pg=/usr/local/psql/bin/pg_config
|
||||
</PRE>
|
||||
<H3><A NAME="SECTION000102400000000000000">
|
||||
GRASS</A>
|
||||
</H3>
|
||||
To build QGIS with GRASS support you must specify the full path to the installed GRASS binary package:
|
||||
<PRE>
|
||||
./configure --with-grass=/usr/local/grass-5.7.0
|
||||
</PRE>
|
||||
This assumes that GRASS is installed in the default location. Change the path to match the location of your GRASS installation.
|
||||
|
||||
<H3><A NAME="SECTION000102500000000000000">
|
||||
Example Use of Configure</A>
|
||||
</H3>
|
||||
An example of use of configure for building QGIS with all options:
|
||||
<PRE>
|
||||
./configure --prefix=/usr/local/qgis \
|
||||
--with-gdal=/usr/local/gdal/bin/gdal-config \
|
||||
--with-pg=/usr/local/psql/bin/pg_config \
|
||||
--with-grass=/usr/local/grass-5.7.0
|
||||
</PRE>
|
||||
This will configure QGIS to use GDAL, GRASS, and PostgreSQL. QGIS will be
|
||||
installed in /usr/local/qgis.
|
||||
|
||||
<P>
|
||||
If QTDIR is set and gdal-config and pg_config are both
|
||||
in the PATH, there is no need to use the -with-gdal and -with-pg
|
||||
options. The configure script will properly detect and configure
|
||||
GDAL and PostgreSQL. You must still use the -with-grass option if building with GRASS support.
|
||||
|
||||
<H3><A NAME="SECTION000102600000000000000">
|
||||
Compiling and Installing QGIS</A>
|
||||
</H3>
|
||||
Once properly configured simply issue the following commands:
|
||||
<PRE>
|
||||
make
|
||||
make install
|
||||
</PRE>
|
||||
NOTE - As of version 0.1, you can no longer run QGIS from the src directory. You must do a make install and start QGIS from the installed location. In the case of the example above, the QGIS binary resides in the bin subdirectory of the directory specified with the prefix option (/usr/local/qgis/bin).
|
||||
|
||||
<P>
|
||||
For information on using QGIS see the QGIS User Guide.
|
||||
|
||||
<P>
|
||||
|
||||
<H1><A NAME="SECTION000110000000000000000">
|
||||
Building Plugins</A>
|
||||
</H1>
|
||||
The QGIS source distribution contains a number of "core" plugins. These are built along with QGIS using the instructions above. Additional external plugins are available from the QGIS community website at <TT><A NAME="tex2html16"
|
||||
HREF="http://community.qgis.org">http://community.qgis.org</A></TT>. Instructions for building an external plugin can be found at <TT><A NAME="tex2html17"
|
||||
HREF="http://wiki.qgis.org/qgiswiki/StepByStepBuildInstructions">http://wiki.qgis.org/qgiswiki/StepByStepBuildInstructions</A></TT>. Some external plugins may include instructions on building. If so, follow the instructions provided with the plugin rather than those provided in the wiki.
|
||||
|
||||
<H1><A NAME="SECTION000120000000000000000">
|
||||
About this document ...</A>
|
||||
</H1>
|
||||
<STRONG>Building and Installing QGIS</STRONG><P>
|
||||
This document was generated using the
|
||||
<A HREF="http://www.latex2html.org/"><STRONG>LaTeX</STRONG>2<tt>HTML</tt></A> translator Version 2002-2-1 (1.70)
|
||||
<P>
|
||||
Copyright © 1993, 1994, 1995, 1996,
|
||||
<A HREF="http://cbl.leeds.ac.uk/nikos/personal.html">Nikos Drakos</A>,
|
||||
Computer Based Learning Unit, University of Leeds.
|
||||
<BR>
|
||||
Copyright © 1997, 1998, 1999,
|
||||
<A HREF="http://www.maths.mq.edu.au/~ross/">Ross Moore</A>,
|
||||
Mathematics Department, Macquarie University, Sydney.
|
||||
<P>
|
||||
The command line arguments were: <BR>
|
||||
<STRONG>latex2html</STRONG> <TT>-dir html -nonavigation -split 0 install.tex</TT>
|
||||
<P>
|
||||
The translation was initiated by Gary Sherman on 2004-12-19
|
||||
<BR><HR>
|
||||
<ADDRESS>
|
||||
Gary Sherman
|
||||
2004-10-01
|
||||
2004-12-19
|
||||
</ADDRESS>
|
||||
</BODY>
|
||||
</HTML>
|
||||
|
@ -19,27 +19,9 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
|
||||
<LINK REL="STYLESHEET" HREF="install.css">
|
||||
|
||||
<LINK REL="next" HREF="node1.html">
|
||||
</HEAD>
|
||||
|
||||
<BODY >
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html20"
|
||||
HREF="node1.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up_g.png">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev_g.png">
|
||||
<A NAME="tex2html18"
|
||||
HREF="node1.html">
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html21"
|
||||
HREF="node1.html">Contents</A>
|
||||
<B> <A NAME="tex2html19"
|
||||
HREF="node1.html">Contents</A></B>
|
||||
<BR>
|
||||
<BR>
|
||||
<!--End of Navigation Panel-->
|
||||
|
||||
<P>
|
||||
|
||||
@ -47,62 +29,625 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
<H1 ALIGN=CENTER>Building and Installing QGIS</H1>
|
||||
<P ALIGN=CENTER><STRONG>Gary Sherman - Tim Sutton</STRONG></P>
|
||||
<P ALIGN=LEFT></P>
|
||||
<BR><HR>
|
||||
<!--Table of Child-Links-->
|
||||
<A NAME="CHILD_LINKS"></A>
|
||||
<BR>
|
||||
|
||||
<H2><A NAME="SECTION00010000000000000000">
|
||||
Contents</A>
|
||||
</H2>
|
||||
<!--Table of Contents-->
|
||||
|
||||
<UL>
|
||||
<LI><A NAME="tex2html22"
|
||||
HREF="node1.html">Contents</A>
|
||||
<LI><A NAME="tex2html23"
|
||||
HREF="node2.html">Introduction</A>
|
||||
<LI><A NAME="tex2html24"
|
||||
HREF="node3.html">Getting QGIS</A>
|
||||
<LI><A NAME="tex2html25"
|
||||
HREF="node4.html">PostgreSQL</A>
|
||||
<LI><A NAME="tex2html26"
|
||||
HREF="node5.html">GEOS</A>
|
||||
<LI><A NAME="tex2html27"
|
||||
HREF="node6.html">PostGIS</A>
|
||||
<LI><A NAME="tex2html28"
|
||||
HREF="node7.html">GRASS</A>
|
||||
<LI><A NAME="tex2html29"
|
||||
HREF="node8.html">GDAL/OGR</A>
|
||||
<LI><A NAME="tex2html30"
|
||||
HREF="node9.html">Qt</A>
|
||||
<LI><A NAME="tex2html31"
|
||||
HREF="node10.html">Building QGIS</A>
|
||||
<LI><A NAME="tex2html41"
|
||||
HREF="install.html#SECTION00020000000000000000">Introduction</A>
|
||||
<UL>
|
||||
<LI><A NAME="tex2html32"
|
||||
HREF="node11.html">Quick and Dirty</A>
|
||||
<LI><A NAME="tex2html33"
|
||||
HREF="node12.html">Configuring QGIS the Right Way</A>
|
||||
<UL>
|
||||
<LI><A NAME="tex2html34"
|
||||
HREF="node13.html">Qt</A>
|
||||
<LI><A NAME="tex2html35"
|
||||
HREF="node14.html">GDAL</A>
|
||||
<LI><A NAME="tex2html36"
|
||||
HREF="node15.html">PostgreSQL</A>
|
||||
<LI><A NAME="tex2html37"
|
||||
HREF="node16.html">GRASS</A>
|
||||
<LI><A NAME="tex2html38"
|
||||
HREF="node17.html">Example Use of Configure</A>
|
||||
<LI><A NAME="tex2html39"
|
||||
HREF="node18.html">Compiling and Installing QGIS</A>
|
||||
</UL>
|
||||
<LI><A NAME="tex2html42"
|
||||
HREF="install.html#SECTION00021000000000000000">Installing Windows Version</A>
|
||||
<LI><A NAME="tex2html43"
|
||||
HREF="install.html#SECTION00022000000000000000">Installing Mac OSX Version</A>
|
||||
<LI><A NAME="tex2html44"
|
||||
HREF="install.html#SECTION00023000000000000000">Building from Source</A>
|
||||
</UL>
|
||||
<BR>
|
||||
<LI><A NAME="tex2html40"
|
||||
HREF="node19.html">Building Plugins</A>
|
||||
<LI><A NAME="tex2html41"
|
||||
HREF="node20.html">About this document ...</A>
|
||||
<LI><A NAME="tex2html45"
|
||||
HREF="install.html#SECTION00030000000000000000">Getting QGIS</A>
|
||||
<LI><A NAME="tex2html46"
|
||||
HREF="install.html#SECTION00040000000000000000">PostgreSQL</A>
|
||||
<LI><A NAME="tex2html47"
|
||||
HREF="install.html#SECTION00050000000000000000">GEOS</A>
|
||||
<LI><A NAME="tex2html48"
|
||||
HREF="install.html#SECTION00060000000000000000">PostGIS</A>
|
||||
<LI><A NAME="tex2html49"
|
||||
HREF="install.html#SECTION00070000000000000000">GRASS</A>
|
||||
<LI><A NAME="tex2html50"
|
||||
HREF="install.html#SECTION00080000000000000000">GDAL/OGR</A>
|
||||
<LI><A NAME="tex2html51"
|
||||
HREF="install.html#SECTION00090000000000000000">Qt</A>
|
||||
<LI><A NAME="tex2html52"
|
||||
HREF="install.html#SECTION000100000000000000000">Building QGIS</A>
|
||||
<UL>
|
||||
<LI><A NAME="tex2html53"
|
||||
HREF="install.html#SECTION000101000000000000000">Quick and Dirty</A>
|
||||
<LI><A NAME="tex2html54"
|
||||
HREF="install.html#SECTION000102000000000000000">Configuring QGIS the Right Way</A>
|
||||
</UL>
|
||||
<!--End of Table of Child-Links-->
|
||||
<BR>
|
||||
<LI><A NAME="tex2html55"
|
||||
HREF="install.html#SECTION000110000000000000000">Building Plugins</A>
|
||||
</UL>
|
||||
<!--End of Table of Contents-->
|
||||
|
||||
<P>
|
||||
|
||||
|
||||
<P>
|
||||
|
||||
<H1><A NAME="SECTION00020000000000000000"></A><A NAME="label_introduction"></A>
|
||||
<BR>
|
||||
Introduction
|
||||
</H1>
|
||||
This document briefly describes how to build QGIS 0.6 (<I>`Simon'</I>) from the source distribution. These instructions are for Linux/Unix and other POSIX systems which have the required build environment.
|
||||
|
||||
<P>
|
||||
The latest version of this document can always be found at <TT><A NAME="tex2html1"
|
||||
HREF="http://qgis.org/docs/install.html">http://qgis.org/docs/install.html</A></TT>.
|
||||
|
||||
<H2><A NAME="SECTION00021000000000000000">
|
||||
Installing Windows Version</A>
|
||||
</H2>
|
||||
Installing the Windows version of QGIS is simply a matter of running the user friendly setup wizard. See the README.WIN32 file for additional information regarding the Windows version of QGIS. At version 0.6, the GRASS plugin is not available in Windows.
|
||||
|
||||
<H2><A NAME="SECTION00022000000000000000">
|
||||
Installing Mac OSX Version</A>
|
||||
</H2>
|
||||
To install the compressed disk image containing the OSX version of QGIS,
|
||||
double-click to expand and mount the image, then drag QGIS application to your
|
||||
hard drive. The OSX version does not include GRASS support.
|
||||
|
||||
<P>
|
||||
|
||||
<H2><A NAME="SECTION00023000000000000000">
|
||||
Building from Source</A>
|
||||
</H2>
|
||||
The remainder of this document deals with compiling and installing QGIS from the
|
||||
source code. Specifically this applies to Linux/Unix systems.
|
||||
|
||||
<P>
|
||||
QGIS can be installed with three levels of support for data stores:
|
||||
|
||||
<OL>
|
||||
<LI>Basic raster and vector support (GDAL and OGR formats)
|
||||
</LI>
|
||||
<LI>PostreSQL/GEOS/PostGIS
|
||||
</LI>
|
||||
<LI>GRASS raster and vector support
|
||||
</LI>
|
||||
</OL>
|
||||
|
||||
<P>
|
||||
Basic support uses the GDAL/OGR libraries and supports many raster and vector formats. For more information on the available formats, see <TT><A NAME="tex2html2"
|
||||
HREF="http://www.remotesensing.org:16080/gdal/formats_list.html">http://www.remotesensing.org:16080/gdal/formats_list.html</A></TT> and <TT><A NAME="tex2html3"
|
||||
HREF="http://www.remotesensing.org:16080/gdal/ogr/ogr_formats.html">http://www.remotesensing.org:16080/gdal/ogr/ogr_formats.html</A></TT>.
|
||||
|
||||
<P>
|
||||
PostgreSQL/PostGIS support allows you to store spatial data in a PostgreSQL database. GRASS support provides access to GRASS mapsets.
|
||||
|
||||
<P>
|
||||
<B>Note:</B> - If you plan to build QGIS with GRASS support, version 1.2.3 or higher of GDAL must be used.
|
||||
|
||||
<P>
|
||||
Each of the requirements are discussed below. Note that the information given below is abstracted from the installation documentation for each of the libraries. See the install information for each library to get detailed instructions. In the documentation below, the file names and versions used are examples.
|
||||
|
||||
<P>
|
||||
If you are building QGIS without PostgreSQL or GRASS support, skip to the section on Installing GDAL/OGR.
|
||||
|
||||
<H1><A NAME="SECTION00030000000000000000">
|
||||
Getting QGIS</A>
|
||||
</H1>
|
||||
QGIS is available in both source and package format from <TT><A NAME="tex2html4"
|
||||
HREF="http://qgis.org">http://qgis.org</A></TT>.
|
||||
|
||||
<P>
|
||||
In addition, packages for many Linux distributions are independently maintained in various locations. See
|
||||
the <I>Download</I> section on <TT><A NAME="tex2html5"
|
||||
HREF="http://qgis.org">http://qgis.org</A></TT> for the latest information on package locations.
|
||||
|
||||
<P>
|
||||
Packages for most of the software/libraries discussed below can be found for almost all Linux distributions. While it is possible to mix compiling from source and installing packages to meet the requirements for QGIS, sometimes this becomes tricky. Following the steps below will generally ensure a successful installation. If you are using SuSE 9.1, the LinGIS distribution <TT><A NAME="tex2html6"
|
||||
HREF="ftp://ftp.lingis.org">ftp://ftp.lingis.org</A></TT> is a good choice for installing QGIS and its dependencies.
|
||||
|
||||
<P>
|
||||
|
||||
<H1><A NAME="SECTION00040000000000000000">
|
||||
PostgreSQL</A>
|
||||
</H1>
|
||||
QGIS uses the latest features of PostgreSQL. For this reason, version 7.4.x or higher is recommended with QGIS version 0.5. If you choose to add PostgreSQL, you must also install PostGIS and the GEOS library (see below).
|
||||
|
||||
<OL>
|
||||
<LI>Download PostgreSQL source from www.postgresql.org
|
||||
</LI>
|
||||
<LI>Extract the source
|
||||
<PRE>
|
||||
tar -xzf postgresql-7.4.1.tar.gz
|
||||
</PRE>
|
||||
|
||||
<P>
|
||||
</LI>
|
||||
<LI>Change to the source directory
|
||||
<PRE>
|
||||
cd postgresql-7.4.1
|
||||
</PRE>
|
||||
|
||||
<P>
|
||||
</LI>
|
||||
<LI>Configure PostgreSQL:
|
||||
<PRE>
|
||||
./configure --prefix=/usr/local/pgsql
|
||||
</PRE>
|
||||
|
||||
<P>
|
||||
</LI>
|
||||
<LI>Build
|
||||
<PRE>
|
||||
make
|
||||
</PRE>
|
||||
|
||||
<P>
|
||||
</LI>
|
||||
<LI>Install
|
||||
<PRE>
|
||||
make install
|
||||
</PRE>
|
||||
|
||||
<P>
|
||||
</LI>
|
||||
<LI>As root, create the postgres user and setup the database (following taken from PostgreSQL INSTALL file with modification)
|
||||
|
||||
<UL>
|
||||
<LI>Create the postgres user
|
||||
<PRE>
|
||||
adduser postgres
|
||||
</PRE>
|
||||
|
||||
<P>
|
||||
</LI>
|
||||
<LI>Create the directory for the PostgreSQL database
|
||||
<PRE>
|
||||
mkdir /usr/local/pgsql/data
|
||||
</PRE>
|
||||
|
||||
<P>
|
||||
</LI>
|
||||
<LI>Change ownership of the data directory to the postgres user
|
||||
<PRE>
|
||||
chown postgres /usr/local/pgsql/data
|
||||
</PRE>
|
||||
|
||||
<P>
|
||||
</LI>
|
||||
<LI>su to the postgres user (or login as postgres)
|
||||
<PRE>
|
||||
su - postgres
|
||||
</PRE>
|
||||
|
||||
<P>
|
||||
</LI>
|
||||
<LI>Change to the PostgreSQL install directory
|
||||
<PRE>
|
||||
cd /usr/local/pgsql
|
||||
</PRE>
|
||||
|
||||
<P>
|
||||
</LI>
|
||||
<LI>Initialize the database
|
||||
<PRE>
|
||||
./bin/initdb -D /usr/local/pgsql/data
|
||||
</PRE>
|
||||
|
||||
<P>
|
||||
</LI>
|
||||
<LI>Start the PostgreSQL daemon
|
||||
<FONT SIZE="-1"> </FONT><PRE>
|
||||
./bin/pg_ctl start -o "-i" -D /usr/local/pgsql/data -l /home/postgres/serverlog
|
||||
</PRE><FONT SIZE="-1">
|
||||
</FONT>
|
||||
<P>
|
||||
<FONT SIZE="-1">
|
||||
</LI>
|
||||
<LI>Create the test database
|
||||
</FONT>
|
||||
<P>
|
||||
<PRE>
|
||||
./bin/createdb test
|
||||
</PRE><FONT SIZE="-1">
|
||||
</FONT>
|
||||
</LI>
|
||||
</UL>
|
||||
</LI>
|
||||
<LI>PostgreSQL should now be running. Logon as the postgres user (or use su - postgres). You should be able to connect to the test database and execute a test query with the following commands:
|
||||
|
||||
<P>
|
||||
<PRE>
|
||||
psql test
|
||||
select version();
|
||||
version
|
||||
-------------------------------------------------------------------------------------
|
||||
PostgreSQL 7.4.1 on i686-pc-linux-gnu, compiled by GCC gcc (GCC) 3.3.1 (SuSE Linux)
|
||||
(1 row)
|
||||
|
||||
\q
|
||||
</PRE>
|
||||
|
||||
<P>
|
||||
</LI>
|
||||
<LI>PostgreSQL install is done
|
||||
|
||||
</LI>
|
||||
</OL>
|
||||
|
||||
<P>
|
||||
|
||||
<H1><A NAME="SECTION00050000000000000000">
|
||||
GEOS</A>
|
||||
</H1>
|
||||
|
||||
<P>
|
||||
<B>Note:</B> As of version 0.6, GEOS is a requirement in order to build QGIS.
|
||||
|
||||
<P>
|
||||
QGIS uses GEOS to properly fetch features from the the underlying datastore
|
||||
when doing an identify or select operation.
|
||||
|
||||
<P>
|
||||
To install GEOS:
|
||||
|
||||
<OL>
|
||||
<LI>Download GEOS source from <TT><A NAME="tex2html7"
|
||||
HREF="http://geos.refractions.net">http://geos.refractions.net</A></TT>
|
||||
</LI>
|
||||
<LI>Untar GEOS
|
||||
<PRE>
|
||||
tar -xzf geos-2.0.0.tar.gz
|
||||
</PRE>
|
||||
</LI>
|
||||
<LI>Change to the GEOS source dir
|
||||
<PRE>
|
||||
cd geos-2.0-.0
|
||||
</PRE>
|
||||
</LI>
|
||||
<LI>Follow the instructions in the GEOS README file to complete the installation. Typically the install goes like this:
|
||||
<PRE>
|
||||
./configure
|
||||
make
|
||||
make install
|
||||
</PRE>
|
||||
|
||||
<P>
|
||||
</LI>
|
||||
</OL>
|
||||
|
||||
<P>
|
||||
|
||||
<H1><A NAME="SECTION00060000000000000000">
|
||||
PostGIS</A>
|
||||
</H1>
|
||||
|
||||
<P>
|
||||
NOTE - You must edit the PostGIS Makefile and make sure that USE_GEOS=1 is
|
||||
set. Also adjust GEOS_DIR to point to your GEOS installation directory.
|
||||
|
||||
<OL>
|
||||
<LI>Download PostGIS source from <TT><A NAME="tex2html8"
|
||||
HREF="http://postgis.refractions.net">http://postgis.refractions.net</A></TT>
|
||||
|
||||
<P>
|
||||
</LI>
|
||||
<LI>Untar PostGIS into the contrib subdirectory of the postgresql build directory. The contrib subdirectory is located in the directory created in step 3 of the PostgreSQL installation process.
|
||||
</LI>
|
||||
<LI>Change to the postgis subdirectory
|
||||
</LI>
|
||||
<LI>Edit the Makefile to enable GEOS support (see the note above)
|
||||
</LI>
|
||||
<LI>PostGIS provides a manual in the doc/html subdirectory that explains the build process (see the Installation section)
|
||||
</LI>
|
||||
<LI>The quick and dirty steps to install PostGIS are:
|
||||
<PRE>
|
||||
cd contrib
|
||||
gunzip postgis-0.8.0.tar.gz
|
||||
tar xvf postgis-0.8.0.tar
|
||||
cd postgis-0.8.0
|
||||
make
|
||||
make install
|
||||
createlang plpgsql yourtestdatabase
|
||||
psql -d yourtestdatabase -f postgis.sql
|
||||
psql -d yourtestdatabase -f spatial_ref_sys.sql
|
||||
</PRE>
|
||||
</LI>
|
||||
</OL>
|
||||
The <B>better way</B> to install PostGIS is to carefully follow the instructions in the PostGIS manual in the doc/html subdirectory or the online manual at <TT><A NAME="tex2html9"
|
||||
HREF="http://postgis.refractions.net/docs">http://postgis.refractions.net/docs</A></TT>
|
||||
<P>
|
||||
|
||||
<H1><A NAME="SECTION00070000000000000000">
|
||||
GRASS</A>
|
||||
</H1>
|
||||
If you want QGIS to support GRASS vector and raster layers, you must build GRASS prior to proceeding.
|
||||
Follow the directions on the GRASS website carefully to build version 5.7. Additional information and the build instructions can be found at <TT><A NAME="tex2html10"
|
||||
HREF="http://grass.itc.it">http://grass.itc.it</A></TT>.
|
||||
|
||||
<P>
|
||||
The GRASS software is available for download at <TT><A NAME="tex2html11"
|
||||
HREF="http://grass.itc.it/download.html">http://grass.itc.it/download.html</A></TT>.
|
||||
|
||||
<P>
|
||||
|
||||
<H1><A NAME="SECTION00080000000000000000">
|
||||
GDAL/OGR</A>
|
||||
</H1>
|
||||
The GDAL and OGR libraries provide support for raster and vector data formats. QGIS makes use of both of these libraries (which come bundled in one distribution).
|
||||
|
||||
<P>
|
||||
Note: A Linux binary of GDAL is available at <TT><A NAME="tex2html12"
|
||||
HREF="http://www.remotesensing.org/gdal">http://www.remotesensing.org/gdal</A></TT>. If you choose to install the binary you will also need to download and unpack the source tree since QGIS needs the header files in order to compile.
|
||||
|
||||
<P>
|
||||
To install GDAL/OGR from source:
|
||||
|
||||
<OL>
|
||||
<LI>Download the GDAL distribution from <TT><A NAME="tex2html13"
|
||||
HREF="http://www.remotesensing.org/gdal">http://www.remotesensing.org/gdal</A></TT>. You should use version 1.1.9 or higher. Versions prior to 1.1.9 contained a bug that caused problems when a null feature was encountered. If you want to build vector support for GRASS, you must use GDAL 1.2.3.
|
||||
|
||||
<P>
|
||||
</LI>
|
||||
<LI>Untar the distribution
|
||||
<PRE>
|
||||
tar xfvz /../path/../gdal-x.x.x.tar.gz
|
||||
</PRE>
|
||||
|
||||
<P>
|
||||
</LI>
|
||||
<LI>Change to the gdal-x.x.x subdirectory that was created by step 2
|
||||
<PRE>
|
||||
cd gdal-x.x.x
|
||||
</PRE>
|
||||
|
||||
<P>
|
||||
</LI>
|
||||
<LI>Configure GDAL
|
||||
<PRE>
|
||||
./configure
|
||||
</PRE>
|
||||
or if you want GRASS support
|
||||
<PRE>
|
||||
./configure --with-grass=<full path to grass install>
|
||||
</PRE>
|
||||
Depending on the GDAL version you are building, it may be necessary to specify -without-ogdi when running configure if you don't have the OGDI libary avaiable on your system.
|
||||
|
||||
<P>
|
||||
</LI>
|
||||
<LI>Build and install GDAL:
|
||||
<PRE>
|
||||
make
|
||||
su
|
||||
make install
|
||||
</PRE>
|
||||
|
||||
<P>
|
||||
</LI>
|
||||
<LI>In order to run GDAL after installing it is necessary for the shared
|
||||
library to be findable. This can often be accomplished by setting
|
||||
LD_LIBRARY_PATH to include /usr/local/lib. On Linux, you can add
|
||||
/usr/local/lib (or whatever path you used for installing GDAL) to
|
||||
/etc/ld.so.conf and run ldconfig as root.
|
||||
|
||||
<P>
|
||||
</LI>
|
||||
<LI>Make sure that gdal-config (found in the bin subdirectory where GDAL was installed) is included in the PATH. If necessary, add the path to gdal-config to the PATH environment variable.
|
||||
<PRE>
|
||||
export PATH=/../path/../gdal-config:$PATH
|
||||
</PRE>
|
||||
|
||||
<P>
|
||||
</LI>
|
||||
<LI>Check the install by running:
|
||||
<PRE>
|
||||
gdal-config --prefix
|
||||
</PRE>
|
||||
|
||||
<P>
|
||||
</LI>
|
||||
</OL>
|
||||
|
||||
<P>
|
||||
If you've had problems during the installation, refer to this manual, where the whole process is described with some more detail: <TT><A NAME="tex2html14"
|
||||
HREF="http://www.remotesensing.org/gdal/gdal_building.html">http://www.remotesensing.org/gdal/gdal_building.html</A></TT>
|
||||
|
||||
<P>
|
||||
|
||||
<H1><A NAME="SECTION00090000000000000000">
|
||||
Qt</A>
|
||||
</H1>
|
||||
Qt 3.1.2 or higher is required in order to compile QGIS. You may already have Qt on your system. If so, check to see if you have version 3.1.2 or later. You can check the Qt version using the find command:
|
||||
<PRE>
|
||||
find ./ -name qglobal.h 2>/dev/null | xargs grep QT_VERSION_STR
|
||||
</PRE>
|
||||
If you have the locate utility installed you can do the same more quickly using:
|
||||
<PRE>
|
||||
locate qglobal.h | xargs grep QT_VERSION_STR
|
||||
</PRE>
|
||||
In either case the result should look something like this:
|
||||
<PRE>
|
||||
#define QT_VERSION_STR "3.3.1"
|
||||
</PRE>
|
||||
In the example above, Qt 3.3.1 is installed.
|
||||
|
||||
<P>
|
||||
If Qt is not installed, you will have to install the Qt development package for your distribution. If you are not able to install the required Qt packages, you will have to build from source.
|
||||
|
||||
<P>
|
||||
To install Qt from source:
|
||||
|
||||
<OL>
|
||||
<LI>Download Qt from <TT><A NAME="tex2html15"
|
||||
HREF="http://www.trolltech.com/developer">http://www.trolltech.com/developer</A></TT> (choose the Qt/X11 Free Edition)
|
||||
</LI>
|
||||
<LI>Unpack the distribution
|
||||
</LI>
|
||||
<LI>Follow directions provided in the distribution directory (doc/html/install-x11.html)
|
||||
</LI>
|
||||
<LI>Use whatever configure options you like but make sure you include -thread for use with QGIS. You can configure Qt with minimal options:
|
||||
<PRE>
|
||||
./configure -thread
|
||||
</PRE>
|
||||
|
||||
<P>
|
||||
</LI>
|
||||
<LI>Complete the installation per the instructions provided in the Qt documentation (see step 3)
|
||||
|
||||
</LI>
|
||||
</OL>
|
||||
|
||||
<P>
|
||||
|
||||
<H1><A NAME="SECTION000100000000000000000">
|
||||
Building QGIS</A>
|
||||
</H1>
|
||||
|
||||
<P>
|
||||
After you have installed the required libraries, you are ready to build QGIS. Download and untar the QGIS distribution and change to the QGIS source directory. You have two options for building and installing QGIS: <B>Quick and Dirty</B> and the <B>right way</B>.
|
||||
|
||||
<H2><A NAME="SECTION000101000000000000000">
|
||||
Quick and Dirty</A>
|
||||
</H2>
|
||||
If you don't need PostgreSQL support and have installed GDAL ,
|
||||
you can configure and build QGIS by changing to the distribution directory
|
||||
and typing:
|
||||
<PRE>./configure
|
||||
make
|
||||
make install
|
||||
</PRE>
|
||||
The above assumes that the gdal-config program is in your PATH
|
||||
See the next section for the full configuration instructions.
|
||||
|
||||
<H2><A NAME="SECTION000102000000000000000">
|
||||
Configuring QGIS the Right Way</A>
|
||||
</H2>
|
||||
To see the configure options available, change the the QGIS
|
||||
directory and enter:
|
||||
<PRE>
|
||||
./configure --help
|
||||
</PRE>
|
||||
Among other options, there are three that are important to
|
||||
the success of the build:
|
||||
<PRE>
|
||||
--with-qtdir=DIR Qt installation directory default=$QTDIR
|
||||
--with-gdal=path/gdal-config Full path to 'gdal-config' script,
|
||||
e.g. '--with-gdal=/usr/local/bin/gdal-config'
|
||||
--with-pg=path/pg_config PostgreSQL (PostGIS) Support
|
||||
(full path to pg_config)
|
||||
--with-grass=DIR GRASS Support (full path to GRASS binary package)
|
||||
</PRE>
|
||||
|
||||
<P>
|
||||
|
||||
<H3><A NAME="SECTION000102100000000000000">
|
||||
Qt</A>
|
||||
</H3>
|
||||
The configure script will detect Qt, unless it is installed in a
|
||||
non-standard location. Setting the QTDIR environment variable will
|
||||
make ensure that the detection succeeds. You can also specify the
|
||||
path using the -with-qtdir option.
|
||||
|
||||
<H3><A NAME="SECTION000102200000000000000">
|
||||
GDAL</A>
|
||||
</H3>
|
||||
If the gdal-config script is in the PATH, configure will automatically
|
||||
detect and configure GDAL support. If not in the path, you can specify
|
||||
the full path to gdal-config using the -with-gdal option. For example:
|
||||
<PRE>
|
||||
/configure --with-gdal=/usr/mystuff/bin/gdal-config
|
||||
</PRE>
|
||||
<H3><A NAME="SECTION000102300000000000000">
|
||||
PostgreSQL</A>
|
||||
</H3>
|
||||
If the pg_config script is in the PATH, configure will automatically
|
||||
detect and configure PostgreSQL support. If not, you can use the
|
||||
-with-pg option to specify the full path to pg_config. For example:
|
||||
<PRE>
|
||||
./configure --with-pg=/usr/local/psql/bin/pg_config
|
||||
</PRE>
|
||||
<H3><A NAME="SECTION000102400000000000000">
|
||||
GRASS</A>
|
||||
</H3>
|
||||
To build QGIS with GRASS support you must specify the full path to the installed GRASS binary package:
|
||||
<PRE>
|
||||
./configure --with-grass=/usr/local/grass-5.7.0
|
||||
</PRE>
|
||||
This assumes that GRASS is installed in the default location. Change the path to match the location of your GRASS installation.
|
||||
|
||||
<H3><A NAME="SECTION000102500000000000000">
|
||||
Example Use of Configure</A>
|
||||
</H3>
|
||||
An example of use of configure for building QGIS with all options:
|
||||
<PRE>
|
||||
./configure --prefix=/usr/local/qgis \
|
||||
--with-gdal=/usr/local/gdal/bin/gdal-config \
|
||||
--with-pg=/usr/local/psql/bin/pg_config \
|
||||
--with-grass=/usr/local/grass-5.7.0
|
||||
</PRE>
|
||||
This will configure QGIS to use GDAL, GRASS, and PostgreSQL. QGIS will be
|
||||
installed in /usr/local/qgis.
|
||||
|
||||
<P>
|
||||
If QTDIR is set and gdal-config and pg_config are both
|
||||
in the PATH, there is no need to use the -with-gdal and -with-pg
|
||||
options. The configure script will properly detect and configure
|
||||
GDAL and PostgreSQL. You must still use the -with-grass option if building with GRASS support.
|
||||
|
||||
<H3><A NAME="SECTION000102600000000000000">
|
||||
Compiling and Installing QGIS</A>
|
||||
</H3>
|
||||
Once properly configured simply issue the following commands:
|
||||
<PRE>
|
||||
make
|
||||
make install
|
||||
</PRE>
|
||||
NOTE - As of version 0.1, you can no longer run QGIS from the src directory. You must do a make install and start QGIS from the installed location. In the case of the example above, the QGIS binary resides in the bin subdirectory of the directory specified with the prefix option (/usr/local/qgis/bin).
|
||||
|
||||
<P>
|
||||
For information on using QGIS see the QGIS User Guide.
|
||||
|
||||
<P>
|
||||
|
||||
<H1><A NAME="SECTION000110000000000000000">
|
||||
Building Plugins</A>
|
||||
</H1>
|
||||
The QGIS source distribution contains a number of "core" plugins. These are built along with QGIS using the instructions above. Additional external plugins are available from the QGIS community website at <TT><A NAME="tex2html16"
|
||||
HREF="http://community.qgis.org">http://community.qgis.org</A></TT>. Instructions for building an external plugin can be found at <TT><A NAME="tex2html17"
|
||||
HREF="http://wiki.qgis.org/qgiswiki/StepByStepBuildInstructions">http://wiki.qgis.org/qgiswiki/StepByStepBuildInstructions</A></TT>. Some external plugins may include instructions on building. If so, follow the instructions provided with the plugin rather than those provided in the wiki.
|
||||
|
||||
<H1><A NAME="SECTION000120000000000000000">
|
||||
About this document ...</A>
|
||||
</H1>
|
||||
<STRONG>Building and Installing QGIS</STRONG><P>
|
||||
This document was generated using the
|
||||
<A HREF="http://www.latex2html.org/"><STRONG>LaTeX</STRONG>2<tt>HTML</tt></A> translator Version 2002-2-1 (1.70)
|
||||
<P>
|
||||
Copyright © 1993, 1994, 1995, 1996,
|
||||
<A HREF="http://cbl.leeds.ac.uk/nikos/personal.html">Nikos Drakos</A>,
|
||||
Computer Based Learning Unit, University of Leeds.
|
||||
<BR>
|
||||
Copyright © 1997, 1998, 1999,
|
||||
<A HREF="http://www.maths.mq.edu.au/~ross/">Ross Moore</A>,
|
||||
Mathematics Department, Macquarie University, Sydney.
|
||||
<P>
|
||||
The command line arguments were: <BR>
|
||||
<STRONG>latex2html</STRONG> <TT>-dir html -nonavigation -split 0 install.tex</TT>
|
||||
<P>
|
||||
The translation was initiated by Gary Sherman on 2004-12-19
|
||||
<BR><HR>
|
||||
<ADDRESS>
|
||||
Gary Sherman
|
||||
2004-10-01
|
||||
2004-12-19
|
||||
</ADDRESS>
|
||||
</BODY>
|
||||
</HTML>
|
||||
|
@ -3,7 +3,7 @@
|
||||
|
||||
|
||||
$key = q/label_introduction/;
|
||||
$ref_files{$key} = "$dir".q|node2.html|;
|
||||
$ref_files{$key} = "$dir".q|install.html|;
|
||||
$noresave{$key} = "$nosave";
|
||||
|
||||
1;
|
||||
|
@ -3,7 +3,7 @@
|
||||
|
||||
|
||||
$key = q/label_introduction/;
|
||||
$external_labels{$key} = "$URL/" . q|node2.html|;
|
||||
$external_labels{$key} = "$URL/" . q|install.html|;
|
||||
$noresave{$key} = "$nosave";
|
||||
|
||||
1;
|
||||
|
@ -98,6 +98,9 @@
|
||||
|
||||
\maketitle
|
||||
\tableofcontents
|
||||
%added by Tim to create a decent space between paragraphs
|
||||
%note its only after toc so toc remains compact
|
||||
\setlength{\parskip}{8pt plus 1pt minus 1pt}
|
||||
% Spacing options are:
|
||||
% \singlespacing, \onehalfspacing, or \doublespacing
|
||||
%\onehalfspacing
|
||||
@ -110,365 +113,5 @@
|
||||
%\lstset{frame=shadowbox}
|
||||
|
||||
\pagenumbering{arabic}
|
||||
|
||||
\section{Introduction}\label{label_introduction}
|
||||
This document briefly describes how to build QGIS 0.5 (\textit{Bandit}) from the source distribution. These instructions are for Linux/Unix and other POSIX systems which have the required build environment.\\
|
||||
|
||||
%\textsc{NOTE - All of the required packages for SuSE 9.1 are available at }\url{ftp://ftp.lingis.org}\\
|
||||
|
||||
Installing the Windows version of QGIS is simply a matter of unzipping the WIN32 distribution and creating a shortcut to the application. See the README.WIN32 file for additional information regarding the Windows version of QGIS. At version 0.5, the GRASS plugin is not available in Windows.\\
|
||||
|
||||
%This document does not contain instructions for building the GRASS plugins. Information on building the GRASS plugin with raster and vector support can be found in the \textit{Building QGIS with GRASS Support} document, available at \url{http://community.qgis.org/grass_plugin}. \\
|
||||
|
||||
|
||||
|
||||
The latest version of this document can always be found at \url{http://qgis.org/docs/install.html}.\\
|
||||
|
||||
QGIS can be installed with three levels of support for data stores:
|
||||
\begin{enumerate}
|
||||
\item Basic raster and vector support (GDAL and OGR formats)
|
||||
\item PostreSQL/GEOS/PostGIS
|
||||
\item GRASS raster and vector support
|
||||
\end{enumerate}
|
||||
|
||||
Basic support uses the GDAL/OGR libraries and supports many raster and vector formats. For more information on the available formats, see \url{http://www.remotesensing.org:16080/gdal/formats\_list.html} and \url{http://www.remotesensing.org:16080/gdal/ogr/ogr\_formats.html}.\\
|
||||
|
||||
PostgreSQL/PostGIS support allows you to store spatial data in a PostgreSQL database. GRASS support provides access to GRASS mapsets. \\
|
||||
|
||||
\textsc{NOTE - IF YOU PLAN TO BUILD QGIS WITH GRASS SUPPORT, VERSION 1.2.3 OR HIGHER
|
||||
OF GDAL MUST BE USED. }\\
|
||||
|
||||
Each of the requirements are discussed below. Note that the information given below is abstracted from the installation documentation for each of the libraries. See the install information for each library to get detailed instructions. In the documentation below, the file names and versions used are examples.
|
||||
\\
|
||||
|
||||
If you are building QGIS without PostgreSQL or GRASS support, skip to the section on Installing GDAL/OGR.
|
||||
\section{Getting QGIS}
|
||||
QGIS is available in both source and package format from \url{http://qgis.org}. \\
|
||||
|
||||
In addition, packages for many Linux distributions are independently maintained in various locations. See
|
||||
the \textit{Download} section on \url{http://qgis.org} for the latest information on package locations.\\
|
||||
|
||||
Packages for most of the software/libraries discussed below can be found for almost all Linux distributions. While it is possible to mix compiling from source and installing packages to meet the requirements for QGIS, sometimes this becomes tricky. Following the steps below will generally ensure a successful installation. If you are using SuSE 9.1, the LinGIS distribution \url{ftp://ftp.lingis.org} is a good choice for installing QGIS and its dependencies.
|
||||
|
||||
|
||||
\section{PostgreSQL}
|
||||
QGIS uses the latest features of PostgreSQL. For this reason, version 7.4.x or higher is recommended with QGIS version 0.5. If you choose to add PostgreSQL, you must also install PostGIS and the GEOS library (see below).
|
||||
\begin{enumerate}
|
||||
\item Download PostgreSQL source from www.postgresql.org
|
||||
\item Extract the source
|
||||
\begin{verbatim}
|
||||
tar -xzf postgresql-7.4.1.tar.gz
|
||||
\end{verbatim}
|
||||
|
||||
\item Change to the source directory
|
||||
\begin{verbatim}
|
||||
cd postgresql-7.4.1
|
||||
\end{verbatim}
|
||||
|
||||
\item Configure PostgreSQL:
|
||||
\begin{verbatim}
|
||||
./configure --prefix=/usr/local/pgsql
|
||||
\end{verbatim}
|
||||
|
||||
\item Build
|
||||
\begin{verbatim}
|
||||
make
|
||||
\end{verbatim}
|
||||
|
||||
\item Install
|
||||
\begin{verbatim}
|
||||
make install
|
||||
\end{verbatim}
|
||||
|
||||
\item As root, create the postgres user and setup the database (following taken from PostgreSQL INSTALL file with modification)
|
||||
\begin{itemize}
|
||||
\item Create the postgres user
|
||||
\begin{verbatim}
|
||||
adduser postgres
|
||||
\end{verbatim}
|
||||
|
||||
\item Create the directory for the PostgreSQL database
|
||||
\begin{verbatim}
|
||||
mkdir /usr/local/pgsql/data
|
||||
\end{verbatim}
|
||||
|
||||
\item Change ownership of the data directory to the postgres user
|
||||
\begin{verbatim}
|
||||
chown postgres /usr/local/pgsql/data
|
||||
\end{verbatim}
|
||||
|
||||
\item su to the postgres user (or login as postgres)
|
||||
\begin{verbatim}
|
||||
su - postgres
|
||||
\end{verbatim}
|
||||
|
||||
\item Change to the PostgreSQL install directory
|
||||
\begin{verbatim}
|
||||
cd /usr/local/pgsql
|
||||
\end{verbatim}
|
||||
|
||||
\item Initialize the database
|
||||
\begin{verbatim}
|
||||
./bin/initdb -D /usr/local/pgsql/data
|
||||
\end{verbatim}
|
||||
|
||||
\item Start the PostgreSQL daemon
|
||||
\small
|
||||
\begin{verbatim}
|
||||
./bin/pg_ctl start -o "-i" -D /usr/local/pgsql/data -l /home/postgres/serverlog
|
||||
\end{verbatim}
|
||||
|
||||
\item Create the test database
|
||||
|
||||
\begin{verbatim}
|
||||
./bin/createdb test
|
||||
\end{verbatim}
|
||||
\normalsize
|
||||
\end{itemize}
|
||||
\item PostgreSQL should now be running. Logon as the postgres user (or use su - postgres). You should be able to connect to the test database and execute a test query with the following commands:
|
||||
|
||||
\begin{verbatim}
|
||||
psql test
|
||||
select version();
|
||||
version
|
||||
-------------------------------------------------------------------------------------
|
||||
PostgreSQL 7.4.1 on i686-pc-linux-gnu, compiled by GCC gcc (GCC) 3.3.1 (SuSE Linux)
|
||||
(1 row)
|
||||
|
||||
\q
|
||||
\end{verbatim}
|
||||
|
||||
|
||||
\item PostgreSQL install is done
|
||||
\end{enumerate}
|
||||
|
||||
\section{GEOS}
|
||||
|
||||
QGIS uses GEOS to properly fetch features from the database when doing an
|
||||
identify or select. You can still view PostGIS layers without GEOS, but you
|
||||
will not be able to create a selection or identify a feature.
|
||||
|
||||
If you choose to proceed without GEOS support, QGIS will warn you each time you load a layer from the database.
|
||||
|
||||
To install GEOS:
|
||||
\begin{enumerate}
|
||||
\item Download GEOS source from \url{http://geos.refractions.net}
|
||||
\item Untar GEOS
|
||||
\begin{verbatim}
|
||||
tar -xzf geos-1.0.0.tar.gz
|
||||
\end{verbatim}
|
||||
\item Change to the GEOS source dir
|
||||
\begin{verbatim}
|
||||
cd geos-1.0-.0
|
||||
\end{verbatim}
|
||||
\item Follow the instructions in the GEOS README file to complete the installation. Typically the install goes like this:
|
||||
\begin{verbatim}
|
||||
./configure
|
||||
make
|
||||
make install
|
||||
\end{verbatim}
|
||||
|
||||
\end{enumerate}
|
||||
|
||||
\section{PostGIS}
|
||||
|
||||
NOTE - You must edit the PostGIS Makefile and make sure that USE\_GEOS=1 is
|
||||
set. Also adjust GEOS\_DIR to point to your GEOS installation directory.
|
||||
\begin{enumerate}
|
||||
\item Download PostGIS source from \url{http://postgis.refractions.net}
|
||||
|
||||
\item Untar PostGIS into the contrib subdirectory of the postgresql build directory. The contrib subdirectory is located in the directory created in step 3 of the PostgreSQL installation process.
|
||||
\item Change to the postgis subdirectory
|
||||
\item Edit the Makefile to enable GEOS support (see the note above)
|
||||
\item PostGIS provides a manual in the doc/html subdirectory that explains the build process (see the Installation section)
|
||||
\item The quick and dirty steps to install PostGIS are:
|
||||
\begin{verbatim}
|
||||
cd contrib
|
||||
gunzip postgis-0.8.0.tar.gz
|
||||
tar xvf postgis-0.8.0.tar
|
||||
cd postgis-0.8.0
|
||||
make
|
||||
make install
|
||||
createlang plpgsql yourtestdatabase
|
||||
psql -d yourtestdatabase -f postgis.sql
|
||||
psql -d yourtestdatabase -f spatial_ref_sys.sql
|
||||
\end{verbatim}
|
||||
\end{enumerate}
|
||||
The \textbf{better way} to install PostGIS is to carefully follow the instructions in the PostGIS manual in the doc/html subdirectory or the online manual at \url{http://postgis.refractions.net/docs}
|
||||
|
||||
\section{GRASS}
|
||||
If you want QGIS to support GRASS vector and raster layers, you must build GRASS prior to proceeding.
|
||||
Follow the directions on the GRASS website carefully to build version 5.7. Additional information and the build instructions can be found at \url{http://grass.itc.it}.\\
|
||||
|
||||
The GRASS software is available for download at \url{http://grass.itc.it/download.html}.
|
||||
|
||||
\section{GDAL/OGR}
|
||||
The GDAL and OGR libraries provide support for raster and vector data formats. QGIS makes use of both of these libraries (which come bundled in one distribution).
|
||||
|
||||
Note: A Linux binary of GDAL is available at \url{http://www.remotesensing.org/gdal}. If you choose to install the binary you will also need to download and unpack the source tree since QGIS needs the header files in order to compile.
|
||||
|
||||
To install GDAL/OGR from source:
|
||||
\begin{enumerate}
|
||||
\item Download the GDAL distribution from \url{http://www.remotesensing.org/gdal}. You should use version 1.1.9 or higher. Versions prior to 1.1.9 contained a bug that caused problems when a null feature was encountered. If you want to build vector support for GRASS, you must use GDAL 1.2.3.
|
||||
|
||||
\item Untar the distribution
|
||||
\begin{verbatim}
|
||||
tar xfvz /../path/../gdal-x.x.x.tar.gz
|
||||
\end{verbatim}
|
||||
|
||||
\item Change to the gdal-x.x.x subdirectory that was created by step 2
|
||||
\begin{verbatim}
|
||||
cd gdal-x.x.x
|
||||
\end{verbatim}
|
||||
|
||||
\item Configure GDAL
|
||||
\begin{verbatim}
|
||||
./configure
|
||||
\end{verbatim}
|
||||
or if you want GRASS support
|
||||
\begin{verbatim}
|
||||
./configure --with-grass=<full path to grass install>
|
||||
\end{verbatim}
|
||||
Depending on the GDAL version you are building, it may be necessary to specify --without-ogdi when running configure if you don't have the OGDI libary avaiable on your system.
|
||||
|
||||
\item Build and install GDAL:
|
||||
\begin{verbatim}
|
||||
make
|
||||
su
|
||||
make install
|
||||
\end{verbatim}
|
||||
|
||||
\item In order to run GDAL after installing it is necessary for the shared
|
||||
library to be findable. This can often be accomplished by setting
|
||||
LD\_LIBRARY\_PATH to include /usr/local/lib. On Linux, you can add
|
||||
/usr/local/lib (or whatever path you used for installing GDAL) to
|
||||
/etc/ld.so.conf and run ldconfig as root.
|
||||
|
||||
\item Make sure that gdal-config (found in the bin subdirectory where GDAL was installed) is included in the PATH. If necessary, add the path to gdal-config to the PATH environment variable.
|
||||
\begin{verbatim}
|
||||
export PATH=/../path/../gdal-config:$PATH
|
||||
\end{verbatim}
|
||||
|
||||
\item Check the install by running:
|
||||
\begin{verbatim}
|
||||
gdal-config --prefix
|
||||
\end{verbatim}
|
||||
|
||||
\end{enumerate}
|
||||
|
||||
If you've had problems during the installation, refer to this manual, where the whole process is described with some more detail: \url{http://www.remotesensing.org/gdal/gdal\_building.html}
|
||||
|
||||
\section{Qt}
|
||||
Qt 3.1.2 or higher is required in order to compile QGIS. You may already have Qt on your system. If so, check to see if you have version 3.1.2 or later. You can check the Qt version using the find command:
|
||||
\begin{verbatim}
|
||||
find ./ -name qglobal.h 2>/dev/null | xargs grep QT_VERSION_STR
|
||||
\end{verbatim}
|
||||
If you have the locate utility installed you can do the same more quickly using:
|
||||
\begin{verbatim}
|
||||
locate qglobal.h | xargs grep QT_VERSION_STR
|
||||
\end{verbatim}
|
||||
In either case the result should look something like this:
|
||||
\begin{verbatim}
|
||||
#define QT_VERSION_STR "3.3.1"
|
||||
\end{verbatim}
|
||||
In the example above, Qt 3.3.1 is installed.\\
|
||||
|
||||
If Qt is not installed, you will have to install the Qt development package for your distribution. If you are not able to install the required Qt packages, you will have to build from source.\\
|
||||
|
||||
To install Qt from source:
|
||||
\begin{enumerate}
|
||||
\item Download Qt from \url{http://www.trolltech.com/developer} (choose the Qt/X11 Free Edition)
|
||||
\item Unpack the distribution
|
||||
\item Follow directions provided in the distribution directory (doc/html/install-x11.html)
|
||||
\item Use whatever configure options you like but make sure you include -thread for use with QGIS. You can configure Qt with minimal options:
|
||||
\begin{verbatim}
|
||||
./configure -thread
|
||||
\end{verbatim}
|
||||
|
||||
\item Complete the installation per the instructions provided in the Qt documentation (see step 3)
|
||||
\end{enumerate}
|
||||
|
||||
\section{Building QGIS}
|
||||
|
||||
After you have installed the required libraries, you are ready to build QGIS. Download and untar the QGIS distribution and change to the QGIS source directory. You have two options for building and installing QGIS: \textbf{Quick and Dirty} and the \textbf{right way}.
|
||||
\subsection{Quick and Dirty}
|
||||
If you don't need PostgreSQL support and have installed GDAL ,
|
||||
you can configure and build QGIS by changing to the distribution directory
|
||||
and typing:
|
||||
\begin{verbatim}./configure
|
||||
make
|
||||
make install
|
||||
\end{verbatim}
|
||||
The above assumes that the gdal-config program is in your PATH
|
||||
See the next section for the full configuration instructions.
|
||||
\subsection{Configuring QGIS the Right Way}
|
||||
To see the configure options available, change the the QGIS
|
||||
directory and enter:
|
||||
\begin{verbatim}
|
||||
./configure --help
|
||||
\end{verbatim}
|
||||
Among other options, there are three that are important to
|
||||
the success of the build:
|
||||
\begin{verbatim}
|
||||
--with-qtdir=DIR Qt installation directory default=$QTDIR
|
||||
--with-gdal=path/gdal-config Full path to 'gdal-config' script,
|
||||
e.g. '--with-gdal=/usr/local/bin/gdal-config'
|
||||
--with-pg=path/pg_config PostgreSQL (PostGIS) Support
|
||||
(full path to pg_config)
|
||||
--with-grass=DIR GRASS Support (full path to GRASS binary package)
|
||||
|
||||
\end{verbatim}
|
||||
|
||||
\subsubsection{Qt}
|
||||
The configure script will detect Qt, unless it is installed in a
|
||||
non-standard location. Setting the QTDIR environment variable will
|
||||
make ensure that the detection succeeds. You can also specify the
|
||||
path using the --with-qtdir option.
|
||||
\subsubsection{GDAL}
|
||||
If the gdal-config script is in the PATH, configure will automatically
|
||||
detect and configure GDAL support. If not in the path, you can specify
|
||||
the full path to gdal-config using the --with-gdal option. For example:
|
||||
\begin{verbatim}
|
||||
/configure --with-gdal=/usr/mystuff/bin/gdal-config
|
||||
\end{verbatim}
|
||||
\subsubsection{PostgreSQL}
|
||||
If the pg\_config script is in the PATH, configure will automatically
|
||||
detect and configure PostgreSQL support. If not, you can use the
|
||||
--with-pg option to specify the full path to pg\_config. For example:
|
||||
\begin{verbatim}
|
||||
./configure --with-pg=/usr/local/psql/bin/pg_config
|
||||
\end{verbatim}
|
||||
\subsubsection{GRASS}
|
||||
To build QGIS with GRASS support you must specify the full path to the installed GRASS binary package:
|
||||
\begin{verbatim}
|
||||
./configure --with-grass=/usr/local/grass-5.7.0
|
||||
\end{verbatim}
|
||||
This assumes that GRASS is installed in the default location. Change the path to match the location of your GRASS installation.
|
||||
\subsubsection{Example Use of Configure}
|
||||
An example of use of configure for building QGIS with all options:
|
||||
\begin{verbatim}
|
||||
./configure --prefix=/usr/local/qgis \
|
||||
--with-gdal=/usr/local/gdal/bin/gdal-config \
|
||||
--with-pg=/usr/local/psql/bin/pg_config \
|
||||
--with-grass=/usr/local/grass-5.7.0
|
||||
\end{verbatim}
|
||||
This will configure QGIS to use GDAL, GRASS, and PostgreSQL. QGIS will be
|
||||
installed in /usr/local/qgis.
|
||||
|
||||
If QTDIR is set and gdal-config and pg\_config are both
|
||||
in the PATH, there is no need to use the --with-gdal and --with-pg
|
||||
options. The configure script will properly detect and configure
|
||||
GDAL and PostgreSQL. You must still use the --with-grass option if building with GRASS support.
|
||||
\subsubsection{Compiling and Installing QGIS}
|
||||
Once properly configured simply issue the following commands:
|
||||
\begin{verbatim}
|
||||
make
|
||||
make install
|
||||
\end{verbatim}
|
||||
NOTE - As of version 0.1, you can no longer run QGIS from the src directory. You must do a make install and start QGIS from the installed location. In the case of the example above, the QGIS binary resides in the bin subdirectory of the directory specified with the prefix option (/usr/local/qgis/bin).\\
|
||||
|
||||
For information on using QGIS see the QGIS User Guide.
|
||||
|
||||
\section{Building Plugins}
|
||||
The QGIS source distribution contains a number of "core" plugins. These are built along with QGIS using the instructions above. Additional external plugins are available from the QGIS community website at \url{http://community.qgis.org}. Instructions for building an external plugin can be found at \url{http://wiki.qgis.org/qgiswiki/StepByStepBuildInstructions}. Some external plugins may include instructions on building. If so, follow the instructions provided with the plugin rather than those provided in the wiki.
|
||||
\end{document}
|
||||
\input{install_source.tex}
|
||||
\end{document}
|
||||
|
365
doc/source/install_guide/install_source.tex
Normal file
@ -0,0 +1,365 @@
|
||||
|
||||
\section{Introduction}\label{label_introduction}
|
||||
This document briefly describes how to build QGIS 0.6 (\textit{`Simon'}) from the source distribution. These instructions are for Linux/Unix and other POSIX systems which have the required build environment.
|
||||
|
||||
The latest version of this document can always be found at \url{http://qgis.org/docs/install.html}.
|
||||
%\textsc{NOTE - All of the required packages for SuSE 9.1 are available at }\url{ftp://ftp.lingis.org}
|
||||
\subsection{Installing Windows Version}
|
||||
Installing the Windows version of QGIS is simply a matter of running the user friendly setup wizard. See the README.WIN32 file for additional information regarding the Windows version of QGIS. At version 0.6, the GRASS plugin is not available in Windows.
|
||||
\subsection{Installing Mac OSX Version}
|
||||
To install the compressed disk image containing the OSX version of QGIS,
|
||||
double-click to expand and mount the image, then drag QGIS application to your
|
||||
hard drive. The OSX version does not include GRASS support.
|
||||
|
||||
%This document does not contain instructions for building the GRASS plugins. Information on building the GRASS plugin with raster and vector support can be found in the \textit{Building QGIS with GRASS Support} document, available at \url{http://community.qgis.org/grass_plugin}.
|
||||
|
||||
\subsection{Building from Source}
|
||||
The remainder of this document deals with compiling and installing QGIS from the
|
||||
source code. Specifically this applies to Linux/Unix systems.
|
||||
|
||||
|
||||
QGIS can be installed with three levels of support for data stores:
|
||||
\begin{enumerate}
|
||||
\item Basic raster and vector support (GDAL and OGR formats)
|
||||
\item PostreSQL/GEOS/PostGIS
|
||||
\item GRASS raster and vector support
|
||||
\end{enumerate}
|
||||
|
||||
Basic support uses the GDAL/OGR libraries and supports many raster and vector formats. For more information on the available formats, see \url{http://www.remotesensing.org:16080/gdal/formats\_list.html} and \url{http://www.remotesensing.org:16080/gdal/ogr/ogr\_formats.html}.
|
||||
|
||||
PostgreSQL/PostGIS support allows you to store spatial data in a PostgreSQL database. GRASS support provides access to GRASS mapsets.
|
||||
|
||||
\textbf{Note:} - If you plan to build QGIS with GRASS support, version 1.2.3 or higher of GDAL must be used.
|
||||
|
||||
Each of the requirements are discussed below. Note that the information given below is abstracted from the installation documentation for each of the libraries. See the install information for each library to get detailed instructions. In the documentation below, the file names and versions used are examples.
|
||||
|
||||
|
||||
If you are building QGIS without PostgreSQL or GRASS support, skip to the section on Installing GDAL/OGR.
|
||||
\section{Getting QGIS}
|
||||
QGIS is available in both source and package format from \url{http://qgis.org}.
|
||||
|
||||
In addition, packages for many Linux distributions are independently maintained in various locations. See
|
||||
the \textit{Download} section on \url{http://qgis.org} for the latest information on package locations.
|
||||
|
||||
Packages for most of the software/libraries discussed below can be found for almost all Linux distributions. While it is possible to mix compiling from source and installing packages to meet the requirements for QGIS, sometimes this becomes tricky. Following the steps below will generally ensure a successful installation. If you are using SuSE 9.1, the LinGIS distribution \url{ftp://ftp.lingis.org} is a good choice for installing QGIS and its dependencies.
|
||||
|
||||
|
||||
\section{PostgreSQL}
|
||||
QGIS uses the latest features of PostgreSQL. For this reason, version 7.4.x or higher is recommended with QGIS version 0.5. If you choose to add PostgreSQL, you must also install PostGIS and the GEOS library (see below).
|
||||
\begin{enumerate}
|
||||
\item Download PostgreSQL source from www.postgresql.org
|
||||
\item Extract the source
|
||||
\begin{verbatim}
|
||||
tar -xzf postgresql-7.4.1.tar.gz
|
||||
\end{verbatim}
|
||||
|
||||
\item Change to the source directory
|
||||
\begin{verbatim}
|
||||
cd postgresql-7.4.1
|
||||
\end{verbatim}
|
||||
|
||||
\item Configure PostgreSQL:
|
||||
\begin{verbatim}
|
||||
./configure --prefix=/usr/local/pgsql
|
||||
\end{verbatim}
|
||||
|
||||
\item Build
|
||||
\begin{verbatim}
|
||||
make
|
||||
\end{verbatim}
|
||||
|
||||
\item Install
|
||||
\begin{verbatim}
|
||||
make install
|
||||
\end{verbatim}
|
||||
|
||||
\item As root, create the postgres user and setup the database (following taken from PostgreSQL INSTALL file with modification)
|
||||
\begin{itemize}
|
||||
\item Create the postgres user
|
||||
\begin{verbatim}
|
||||
adduser postgres
|
||||
\end{verbatim}
|
||||
|
||||
\item Create the directory for the PostgreSQL database
|
||||
\begin{verbatim}
|
||||
mkdir /usr/local/pgsql/data
|
||||
\end{verbatim}
|
||||
|
||||
\item Change ownership of the data directory to the postgres user
|
||||
\begin{verbatim}
|
||||
chown postgres /usr/local/pgsql/data
|
||||
\end{verbatim}
|
||||
|
||||
\item su to the postgres user (or login as postgres)
|
||||
\begin{verbatim}
|
||||
su - postgres
|
||||
\end{verbatim}
|
||||
|
||||
\item Change to the PostgreSQL install directory
|
||||
\begin{verbatim}
|
||||
cd /usr/local/pgsql
|
||||
\end{verbatim}
|
||||
|
||||
\item Initialize the database
|
||||
\begin{verbatim}
|
||||
./bin/initdb -D /usr/local/pgsql/data
|
||||
\end{verbatim}
|
||||
|
||||
\item Start the PostgreSQL daemon
|
||||
\small
|
||||
\begin{verbatim}
|
||||
./bin/pg_ctl start -o "-i" -D /usr/local/pgsql/data -l /home/postgres/serverlog
|
||||
\end{verbatim}
|
||||
|
||||
\item Create the test database
|
||||
|
||||
\begin{verbatim}
|
||||
./bin/createdb test
|
||||
\end{verbatim}
|
||||
\normalsize
|
||||
\end{itemize}
|
||||
\item PostgreSQL should now be running. Logon as the postgres user (or use su - postgres). You should be able to connect to the test database and execute a test query with the following commands:
|
||||
|
||||
\begin{verbatim}
|
||||
psql test
|
||||
select version();
|
||||
version
|
||||
-------------------------------------------------------------------------------------
|
||||
PostgreSQL 7.4.1 on i686-pc-linux-gnu, compiled by GCC gcc (GCC) 3.3.1 (SuSE Linux)
|
||||
(1 row)
|
||||
|
||||
\q
|
||||
\end{verbatim}
|
||||
|
||||
|
||||
\item PostgreSQL install is done
|
||||
\end{enumerate}
|
||||
|
||||
\section{GEOS}
|
||||
|
||||
\textbf{Note:} As of version 0.6, GEOS is a requirement in order to build QGIS.
|
||||
|
||||
QGIS uses GEOS to properly fetch features from the the underlying datastore
|
||||
when doing an identify or select operation.
|
||||
|
||||
To install GEOS:
|
||||
\begin{enumerate}
|
||||
\item Download GEOS source from \url{http://geos.refractions.net}
|
||||
\item Untar GEOS
|
||||
\begin{verbatim}
|
||||
tar -xzf geos-2.0.0.tar.gz
|
||||
\end{verbatim}
|
||||
\item Change to the GEOS source dir
|
||||
\begin{verbatim}
|
||||
cd geos-2.0-.0
|
||||
\end{verbatim}
|
||||
\item Follow the instructions in the GEOS README file to complete the installation. Typically the install goes like this:
|
||||
\begin{verbatim}
|
||||
./configure
|
||||
make
|
||||
make install
|
||||
\end{verbatim}
|
||||
|
||||
\end{enumerate}
|
||||
|
||||
\section{PostGIS}
|
||||
|
||||
NOTE - You must edit the PostGIS Makefile and make sure that USE\_GEOS=1 is
|
||||
set. Also adjust GEOS\_DIR to point to your GEOS installation directory.
|
||||
\begin{enumerate}
|
||||
\item Download PostGIS source from \url{http://postgis.refractions.net}
|
||||
|
||||
\item Untar PostGIS into the contrib subdirectory of the postgresql build directory. The contrib subdirectory is located in the directory created in step 3 of the PostgreSQL installation process.
|
||||
\item Change to the postgis subdirectory
|
||||
\item Edit the Makefile to enable GEOS support (see the note above)
|
||||
\item PostGIS provides a manual in the doc/html subdirectory that explains the build process (see the Installation section)
|
||||
\item The quick and dirty steps to install PostGIS are:
|
||||
\begin{verbatim}
|
||||
cd contrib
|
||||
gunzip postgis-0.8.0.tar.gz
|
||||
tar xvf postgis-0.8.0.tar
|
||||
cd postgis-0.8.0
|
||||
make
|
||||
make install
|
||||
createlang plpgsql yourtestdatabase
|
||||
psql -d yourtestdatabase -f postgis.sql
|
||||
psql -d yourtestdatabase -f spatial_ref_sys.sql
|
||||
\end{verbatim}
|
||||
\end{enumerate}
|
||||
The \textbf{better way} to install PostGIS is to carefully follow the instructions in the PostGIS manual in the doc/html subdirectory or the online manual at \url{http://postgis.refractions.net/docs}
|
||||
|
||||
\section{GRASS}
|
||||
If you want QGIS to support GRASS vector and raster layers, you must build GRASS prior to proceeding.
|
||||
Follow the directions on the GRASS website carefully to build version 5.7. Additional information and the build instructions can be found at \url{http://grass.itc.it}.
|
||||
|
||||
The GRASS software is available for download at \url{http://grass.itc.it/download.html}.
|
||||
|
||||
\section{GDAL/OGR}
|
||||
The GDAL and OGR libraries provide support for raster and vector data formats. QGIS makes use of both of these libraries (which come bundled in one distribution).
|
||||
|
||||
Note: A Linux binary of GDAL is available at \url{http://www.remotesensing.org/gdal}. If you choose to install the binary you will also need to download and unpack the source tree since QGIS needs the header files in order to compile.
|
||||
|
||||
To install GDAL/OGR from source:
|
||||
\begin{enumerate}
|
||||
\item Download the GDAL distribution from \url{http://www.remotesensing.org/gdal}. You should use version 1.1.9 or higher. Versions prior to 1.1.9 contained a bug that caused problems when a null feature was encountered. If you want to build vector support for GRASS, you must use GDAL 1.2.3.
|
||||
|
||||
\item Untar the distribution
|
||||
\begin{verbatim}
|
||||
tar xfvz /../path/../gdal-x.x.x.tar.gz
|
||||
\end{verbatim}
|
||||
|
||||
\item Change to the gdal-x.x.x subdirectory that was created by step 2
|
||||
\begin{verbatim}
|
||||
cd gdal-x.x.x
|
||||
\end{verbatim}
|
||||
|
||||
\item Configure GDAL
|
||||
\begin{verbatim}
|
||||
./configure
|
||||
\end{verbatim}
|
||||
or if you want GRASS support
|
||||
\begin{verbatim}
|
||||
./configure --with-grass=<full path to grass install>
|
||||
\end{verbatim}
|
||||
Depending on the GDAL version you are building, it may be necessary to specify --without-ogdi when running configure if you don't have the OGDI libary avaiable on your system.
|
||||
|
||||
\item Build and install GDAL:
|
||||
\begin{verbatim}
|
||||
make
|
||||
su
|
||||
make install
|
||||
\end{verbatim}
|
||||
|
||||
\item In order to run GDAL after installing it is necessary for the shared
|
||||
library to be findable. This can often be accomplished by setting
|
||||
LD\_LIBRARY\_PATH to include /usr/local/lib. On Linux, you can add
|
||||
/usr/local/lib (or whatever path you used for installing GDAL) to
|
||||
/etc/ld.so.conf and run ldconfig as root.
|
||||
|
||||
\item Make sure that gdal-config (found in the bin subdirectory where GDAL was installed) is included in the PATH. If necessary, add the path to gdal-config to the PATH environment variable.
|
||||
\begin{verbatim}
|
||||
export PATH=/../path/../gdal-config:$PATH
|
||||
\end{verbatim}
|
||||
|
||||
\item Check the install by running:
|
||||
\begin{verbatim}
|
||||
gdal-config --prefix
|
||||
\end{verbatim}
|
||||
|
||||
\end{enumerate}
|
||||
|
||||
If you've had problems during the installation, refer to this manual, where the whole process is described with some more detail: \url{http://www.remotesensing.org/gdal/gdal\_building.html}
|
||||
|
||||
\section{Qt}
|
||||
Qt 3.1.2 or higher is required in order to compile QGIS. You may already have Qt on your system. If so, check to see if you have version 3.1.2 or later. You can check the Qt version using the find command:
|
||||
\begin{verbatim}
|
||||
find ./ -name qglobal.h 2>/dev/null | xargs grep QT_VERSION_STR
|
||||
\end{verbatim}
|
||||
If you have the locate utility installed you can do the same more quickly using:
|
||||
\begin{verbatim}
|
||||
locate qglobal.h | xargs grep QT_VERSION_STR
|
||||
\end{verbatim}
|
||||
In either case the result should look something like this:
|
||||
\begin{verbatim}
|
||||
#define QT_VERSION_STR "3.3.1"
|
||||
\end{verbatim}
|
||||
In the example above, Qt 3.3.1 is installed.
|
||||
|
||||
If Qt is not installed, you will have to install the Qt development package for your distribution. If you are not able to install the required Qt packages, you will have to build from source.
|
||||
|
||||
To install Qt from source:
|
||||
\begin{enumerate}
|
||||
\item Download Qt from \url{http://www.trolltech.com/developer} (choose the Qt/X11 Free Edition)
|
||||
\item Unpack the distribution
|
||||
\item Follow directions provided in the distribution directory (doc/html/install-x11.html)
|
||||
\item Use whatever configure options you like but make sure you include -thread for use with QGIS. You can configure Qt with minimal options:
|
||||
\begin{verbatim}
|
||||
./configure -thread
|
||||
\end{verbatim}
|
||||
|
||||
\item Complete the installation per the instructions provided in the Qt documentation (see step 3)
|
||||
\end{enumerate}
|
||||
|
||||
\section{Building QGIS}
|
||||
|
||||
After you have installed the required libraries, you are ready to build QGIS. Download and untar the QGIS distribution and change to the QGIS source directory. You have two options for building and installing QGIS: \textbf{Quick and Dirty} and the \textbf{right way}.
|
||||
\subsection{Quick and Dirty}
|
||||
If you don't need PostgreSQL support and have installed GDAL ,
|
||||
you can configure and build QGIS by changing to the distribution directory
|
||||
and typing:
|
||||
\begin{verbatim}./configure
|
||||
make
|
||||
make install
|
||||
\end{verbatim}
|
||||
The above assumes that the gdal-config program is in your PATH
|
||||
See the next section for the full configuration instructions.
|
||||
\subsection{Configuring QGIS the Right Way}
|
||||
To see the configure options available, change the the QGIS
|
||||
directory and enter:
|
||||
\begin{verbatim}
|
||||
./configure --help
|
||||
\end{verbatim}
|
||||
Among other options, there are three that are important to
|
||||
the success of the build:
|
||||
\begin{verbatim}
|
||||
--with-qtdir=DIR Qt installation directory default=$QTDIR
|
||||
--with-gdal=path/gdal-config Full path to 'gdal-config' script,
|
||||
e.g. '--with-gdal=/usr/local/bin/gdal-config'
|
||||
--with-pg=path/pg_config PostgreSQL (PostGIS) Support
|
||||
(full path to pg_config)
|
||||
--with-grass=DIR GRASS Support (full path to GRASS binary package)
|
||||
|
||||
\end{verbatim}
|
||||
|
||||
\subsubsection{Qt}
|
||||
The configure script will detect Qt, unless it is installed in a
|
||||
non-standard location. Setting the QTDIR environment variable will
|
||||
make ensure that the detection succeeds. You can also specify the
|
||||
path using the --with-qtdir option.
|
||||
\subsubsection{GDAL}
|
||||
If the gdal-config script is in the PATH, configure will automatically
|
||||
detect and configure GDAL support. If not in the path, you can specify
|
||||
the full path to gdal-config using the --with-gdal option. For example:
|
||||
\begin{verbatim}
|
||||
/configure --with-gdal=/usr/mystuff/bin/gdal-config
|
||||
\end{verbatim}
|
||||
\subsubsection{PostgreSQL}
|
||||
If the pg\_config script is in the PATH, configure will automatically
|
||||
detect and configure PostgreSQL support. If not, you can use the
|
||||
--with-pg option to specify the full path to pg\_config. For example:
|
||||
\begin{verbatim}
|
||||
./configure --with-pg=/usr/local/psql/bin/pg_config
|
||||
\end{verbatim}
|
||||
\subsubsection{GRASS}
|
||||
To build QGIS with GRASS support you must specify the full path to the installed GRASS binary package:
|
||||
\begin{verbatim}
|
||||
./configure --with-grass=/usr/local/grass-5.7.0
|
||||
\end{verbatim}
|
||||
This assumes that GRASS is installed in the default location. Change the path to match the location of your GRASS installation.
|
||||
\subsubsection{Example Use of Configure}
|
||||
An example of use of configure for building QGIS with all options:
|
||||
\begin{verbatim}
|
||||
./configure --prefix=/usr/local/qgis \
|
||||
--with-gdal=/usr/local/gdal/bin/gdal-config \
|
||||
--with-pg=/usr/local/psql/bin/pg_config \
|
||||
--with-grass=/usr/local/grass-5.7.0
|
||||
\end{verbatim}
|
||||
This will configure QGIS to use GDAL, GRASS, and PostgreSQL. QGIS will be
|
||||
installed in /usr/local/qgis.
|
||||
|
||||
If QTDIR is set and gdal-config and pg\_config are both
|
||||
in the PATH, there is no need to use the --with-gdal and --with-pg
|
||||
options. The configure script will properly detect and configure
|
||||
GDAL and PostgreSQL. You must still use the --with-grass option if building with GRASS support.
|
||||
\subsubsection{Compiling and Installing QGIS}
|
||||
Once properly configured simply issue the following commands:
|
||||
\begin{verbatim}
|
||||
make
|
||||
make install
|
||||
\end{verbatim}
|
||||
NOTE - As of version 0.1, you can no longer run QGIS from the src directory. You must do a make install and start QGIS from the installed location. In the case of the example above, the QGIS binary resides in the bin subdirectory of the directory specified with the prefix option (/usr/local/qgis/bin).
|
||||
|
||||
For information on using QGIS see the QGIS User Guide.
|
||||
|
||||
\section{Building Plugins}
|
||||
The QGIS source distribution contains a number of "core" plugins. These are built along with QGIS using the instructions above. Additional external plugins are available from the QGIS community website at \url{http://community.qgis.org}. Instructions for building an external plugin can be found at \url{http://wiki.qgis.org/qgiswiki/StepByStepBuildInstructions}. Some external plugins may include instructions on building. If so, follow the instructions provided with the plugin rather than those provided in the wiki.
|
98
doc/source/user_guide/appendices/gpl.tex
Normal file
@ -0,0 +1,98 @@
|
||||
\chapter{Gnu Public License}
|
||||
\label{gpl_appendix}
|
||||
\index{license!GPL}
|
||||
\begin{small}
|
||||
\begin{center}
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
|
||||
Version 2, June 1991
|
||||
|
||||
|
||||
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
|
||||
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||
|
||||
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
\end{center}
|
||||
Preamble
|
||||
|
||||
The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too.
|
||||
|
||||
When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things.
|
||||
|
||||
To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it.
|
||||
|
||||
For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights.
|
||||
|
||||
We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software.
|
||||
|
||||
Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations.
|
||||
|
||||
Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all.
|
||||
|
||||
The precise terms and conditions for copying, distribution and modification follow.
|
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
|
||||
0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you".
|
||||
|
||||
Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does.
|
||||
|
||||
1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program.
|
||||
|
||||
You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee.
|
||||
|
||||
2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions:
|
||||
|
||||
a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change.
|
||||
|
||||
b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License.
|
||||
|
||||
c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.)
|
||||
|
||||
These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it.
|
||||
|
||||
Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program.
|
||||
|
||||
In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License.
|
||||
|
||||
3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following:
|
||||
|
||||
a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or,
|
||||
|
||||
b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or,
|
||||
|
||||
c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.)
|
||||
|
||||
The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable.
|
||||
|
||||
If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code.
|
||||
|
||||
4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.
|
||||
|
||||
5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it.
|
||||
|
||||
6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License.
|
||||
|
||||
7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program.
|
||||
|
||||
If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances.
|
||||
|
||||
It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice.
|
||||
|
||||
This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License.
|
||||
|
||||
8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License.
|
||||
|
||||
9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation.
|
||||
|
||||
10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally.
|
||||
|
||||
NO WARRANTY
|
||||
|
||||
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
||||
|
||||
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||
\end{small}
|
17
doc/source/user_guide/appendices/qgis_qt_gpl_exception.tex
Normal file
@ -0,0 +1,17 @@
|
||||
\section{Quantum GIS Qt exception for GPL}
|
||||
\index{license!exception}
|
||||
\label{qgis_qt_exception_appendix}
|
||||
|
||||
\begin{quotation}
|
||||
In addition, as a special exception, the QGIS Development Team gives
|
||||
permission to link the code of this program with the Qt library,
|
||||
including but not limited to the following versions (both free and
|
||||
commercial): Qt/Non-commerical Windows, Qt/Windows, Qt/X11, Qt/Mac, and
|
||||
Qt/Embedded (or with modified versions of Qt that use the same license
|
||||
as Qt), and distribute linked combinations including the two. You must
|
||||
obey the GNU General Public License in all respects for all of the code
|
||||
used other than Qt. If you modify this file, you may extend this
|
||||
exception to your version of the file, but you are not obligated to do
|
||||
so. If you do not wish to do so, delete this exception statement from
|
||||
your version.
|
||||
\end{quotation}
|
79
doc/source/user_guide/appendices/supported_data_formats.tex
Normal file
@ -0,0 +1,79 @@
|
||||
\chapter{Supported Data Formats}\label{appdx_data_formats}
|
||||
\section{Supported OGR Formats}\label{appdx_ogr} \index{ogr!supported formats}
|
||||
At the date of this document, the following formats are supported by the OGR
|
||||
library. Formats known to work in QGIS are indicated in \textbf{bold}.
|
||||
|
||||
\begin{compactitem}
|
||||
\item \textbf{Arc/Info Binary Coverage}
|
||||
\item Comma Separated Value (.csv)
|
||||
\item DODS/OPeNDAP
|
||||
\item \textbf{ESRI Shapefile}
|
||||
\item FMEObjects Gateway
|
||||
\item GML
|
||||
\item IHO S-57 (ENC)
|
||||
\item \textbf{Mapinfo File}
|
||||
\item Microstation DGN
|
||||
\item OGDI Vectors
|
||||
\item ODBC
|
||||
\item Oracle Spatial
|
||||
\item PostgreSQL\footnote{QGIS implements its own PostgreSQL functions. OGR should be built without PostgreSQL support}
|
||||
\item \textbf{SDTS}
|
||||
\item SQLite
|
||||
\item UK .NTF
|
||||
\item U.S. Census TIGER/Line
|
||||
\item VRT - Virtual Datasource
|
||||
\end{compactitem}
|
||||
\section{GDAL Raster Formats}\label{appdx_gdal}\index{rasters!supported formats}
|
||||
At the date of this document, the following formats are supported by the GDAL
|
||||
library. Note that not all of these format may work in QGIS for various reasons.
|
||||
For example, some require external commercial libraries. Only those formats that
|
||||
have been well tested will appear in the list of file types when loading a
|
||||
raster into QGIS. Other untested formats can be loaded by selecting the
|
||||
\textsl{All other files (*)} filter. Formats known to work in QGIS are indicated
|
||||
in \textbf{bold}.
|
||||
|
||||
\begin{compactitem}
|
||||
\item \textbf{Arc/Info ASCII Grid}
|
||||
\item \textbf{Arc/Info Binary Grid (.adf)}
|
||||
\item Microsoft Windows Device Independent Bitmap (.bmp)
|
||||
\item BSB Nautical Chart Format (.kap)
|
||||
\item VTP Binary Terrain Format (.bt)
|
||||
\item CEOS (Spot for instance)
|
||||
\item First Generation USGS DOQ (.doq)
|
||||
\item New Labelled USGS DOQ (.doq)
|
||||
\item Military Elevation Data (.dt0, .dt1)
|
||||
\item ERMapper Compressed Wavelets (.ecw)
|
||||
\item ESRI .hdr Labelled
|
||||
\item ENVI .hdr Labelled Raster
|
||||
\item Envisat Image Product (.n1)
|
||||
\item EOSAT FAST Format
|
||||
\item FITS (.fits)
|
||||
\item Graphics Interchange Format (.gif)
|
||||
\item \textbf{GRASS Rasters}\footnote{GRASS raster support is supplied by the QGIS GRASS data provider plugin}
|
||||
\item \textbf{TIFF / GeoTIFF (.tif)}
|
||||
\item Hierarchical Data Format Release 4 (HDF4)
|
||||
\item \textbf{Erdas Imagine (.img)}
|
||||
\item Atlantis MFF2e
|
||||
\item Japanese DEM (.mem)
|
||||
\item \textbf{JPEG JFIF (.jpg)}
|
||||
\item JPEG2000 (.jp2, .j2k)
|
||||
\item JPEG2000 (.jp2, .j2k)
|
||||
\item NOAA Polar Orbiter Level 1b Data Set (AVHRR)
|
||||
\item Erdas 7.x .LAN and .GIS
|
||||
\item In Memory Raster
|
||||
\item Atlantis MFF
|
||||
\item Multi-resolution Seamless Image Database MrSID
|
||||
\item NITF
|
||||
\item NetCDF
|
||||
\item OGDI Bridge
|
||||
\item PCI .aux Labelled
|
||||
\item PCI Geomatics Database File
|
||||
\item Portable Network Graphics (.png)
|
||||
\item Netpbm (.ppm,.pgm)
|
||||
\item \textbf{USGS SDTS DEM (*CATD.DDF)}
|
||||
\item SAR CEOS
|
||||
\item \textbf{USGS ASCII DEM (.dem)}
|
||||
\item X11 Pixmap (.xpm)
|
||||
|
||||
\end{compactitem}
|
||||
\clearpage
|
487
doc/source/user_guide/datetime.sty
Normal file
@ -0,0 +1,487 @@
|
||||
%%
|
||||
%% This is file `datetime.sty',
|
||||
%% generated with the docstrip utility.
|
||||
%%
|
||||
%% The original source files were:
|
||||
%%
|
||||
%% datetime.dtx (with options: `datetime')
|
||||
%% Copyright (C) 2000 Nicola Talbot, all rights reserved.
|
||||
%% If you modify this file, you must change its name first.
|
||||
%% You are NOT ALLOWED to distribute this file alone. You are NOT
|
||||
%% ALLOWED to take money for the distribution or use of either this
|
||||
%% file or a changed version, except for a nominal charge for copying
|
||||
%% etc.
|
||||
%% \CharacterTable
|
||||
%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
|
||||
%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
|
||||
%% Digits \0\1\2\3\4\5\6\7\8\9
|
||||
%% Exclamation \! Double quote \" Hash (number) \#
|
||||
%% Dollar \$ Percent \% Ampersand \&
|
||||
%% Acute accent \' Left paren \( Right paren \)
|
||||
%% Asterisk \* Plus \+ Comma \,
|
||||
%% Minus \- Point \. Solidus \/
|
||||
%% Colon \: Semicolon \; Less than \<
|
||||
%% Equals \= Greater than \> Question mark \?
|
||||
%% Commercial at \@ Left bracket \[ Backslash \\
|
||||
%% Right bracket \] Circumflex \^ Underscore \_
|
||||
%% Grave accent \` Left brace \{ Vertical bar \|
|
||||
%% Right brace \} Tilde \~}
|
||||
\NeedsTeXFormat{LaTeX2e}
|
||||
\ProvidesPackage{datetime}[2004/11/01 Date Time Package version 2.42]
|
||||
\RequirePackage{fmtcount}
|
||||
\newif\if@dt@nodate
|
||||
\@dt@nodatefalse
|
||||
\newif\ifshowdow % show the day of week if true
|
||||
|
||||
\providecommand{\formatdate}[3]{}
|
||||
|
||||
\newcount\@day
|
||||
\newcount\@month
|
||||
\newcount\@year
|
||||
|
||||
\providecommand{\longdate}{%
|
||||
\renewcommand{\formatdate}[3]{\ifshowdow\dayofweekname{##1}{##2}{##3} \fi
|
||||
\@day=##1\relax\@month=##2\relax\@year=##3\relax
|
||||
\@ordinal{\@day}\ \monthname[\@month], \the\@year}}
|
||||
|
||||
\providecommand{\shortdate}{%
|
||||
\renewcommand{\formatdate}[3]{\ifshowdow\shortdayofweekname{##1}{##2}{##3} \fi
|
||||
\@day=##1\relax\@month=##2\relax\@year=##3\relax
|
||||
\@ordinal{\@day}\ \shortmonthname[\@month], \the\@year}}
|
||||
|
||||
\providecommand{\twodigit}[1]{{\@dtctr=#1\relax\ifnum\@dtctr<10 0\fi\the\@dtctr}}
|
||||
|
||||
\providecommand{\ddmmyyyydate}{%
|
||||
\renewcommand{\formatdate}[3]{\@day=##1\relax\@month=##2\relax\@year=##3\relax
|
||||
\twodigit\@day/\twodigit\@month/\the\@year}}
|
||||
|
||||
\providecommand{\dmyyyydate}{%
|
||||
\renewcommand{\formatdate}[3]{\@day=##1\relax\@month=##2\relax\@year=##3\relax
|
||||
\the\@day/\the\@month/\the\@year}}
|
||||
|
||||
\providecommand{\ddmmyydate}{\renewcommand{\formatdate}[3]{%
|
||||
\@day=##1\relax\@month=##2\relax\@year=##3\relax
|
||||
\@dtctr=\@year%
|
||||
\@modulo{\@dtctr}{100}%
|
||||
\twodigit\@day/\twodigit\@month/\twodigit\@dtctr}}
|
||||
|
||||
\providecommand{\dmyydate}{\renewcommand{\formatdate}[3]{%
|
||||
\@day=##1\relax\@month=##2\relax\@year=##3\relax
|
||||
\@dtctr=\@year%
|
||||
\@modulo{\@dtctr}{100}%
|
||||
\the\@day/\the\@month/\twodigit\@dtctr}}
|
||||
|
||||
\providecommand{\textdate}{%
|
||||
\renewcommand{\formatdate}[3]{\ifshowdow\dayofweekname{##1}{##2}{##3} the \fi
|
||||
\@day=##1\relax\@month=##2\relax\@year=##3\relax
|
||||
\@Ordinalstring\@day\ of \monthname[\@month], \@Numberstring\@year}}
|
||||
|
||||
\providecommand{\usdate}{%
|
||||
\renewcommand{\formatdate}[3]{\@day=##1\relax\@month=##2\relax\@year=##3\relax
|
||||
\monthname[\@month]\ \the\@day, \the\@year}}
|
||||
|
||||
\providecommand{\mmddyyyydate}{%
|
||||
\renewcommand{\formatdate}[3]{\@day=##1\relax\@month=##2\relax\@year=##3\relax
|
||||
\twodigit\@month/\twodigit\@day/\the\@year}}
|
||||
|
||||
\providecommand{\mdyyyydate}{%
|
||||
\renewcommand{\formatdate}[3]{\@day=##1\relax\@month=##2\relax\@year=##3\relax
|
||||
\the\@month/\the\@day/\the\@year}}
|
||||
|
||||
\providecommand{\mmddyydate}{\renewcommand{\formatdate}[3]{%
|
||||
\@day=##1\relax\@month=##2\relax\@year=##3\relax
|
||||
\@dtctr=\@year%
|
||||
\@modulo{\@dtctr}{100}%
|
||||
\twodigit\@month/\twodigit\@day/\twodigit\@dtctr}}
|
||||
|
||||
\providecommand{\mdyydate}{\renewcommand{\formatdate}[3]{%
|
||||
\@day=##1\relax\@month=##2\relax\@year=##3\relax
|
||||
\@dtctr=\@year%
|
||||
\@modulo{\@dtctr}{100}%
|
||||
\the\@month/\the\@day/\twodigit\@dtctr}}
|
||||
|
||||
\providecommand{\currenttime}{\xxivtime}
|
||||
|
||||
\providecommand{\settimeformat}[1]{\def\currenttime{\csname#1\endcsname}}
|
||||
\longdate\renewcommand{\fmtord}[1]{\textsuperscript{#1}}\showdowtrue
|
||||
\InputIfFileExists{datetime.cfg}{\typeout{Loading local datetime configurations}}{\typeout{No datetime.cfg file found}}
|
||||
\RequirePackage{fmtcount}
|
||||
\DeclareOption{long}{\longdate}
|
||||
\DeclareOption{short}{\shortdate}
|
||||
\DeclareOption{ddmmyyyy}{\ddmmyyyydate}
|
||||
\DeclareOption{dmyyyy}{\dmyyyydate}
|
||||
\DeclareOption{ddmmyy}{\ddmmyydate}
|
||||
\DeclareOption{dmyy}{\dmyydate}
|
||||
\DeclareOption{text}{\textdate}
|
||||
\DeclareOption{us}{\usdate}
|
||||
\DeclareOption{mmddyyyy}{\mmddyyyydate}
|
||||
\DeclareOption{mdyyyy}{\mdyyyydate}
|
||||
\DeclareOption{mmddyy}{\mmddyydate}
|
||||
\DeclareOption{mdyy}{\mdyydate}
|
||||
\DeclareOption{level}{\renewcommand{\fmtord}[1]{#1}}
|
||||
\DeclareOption{raise}{\renewcommand{\fmtord}[1]{\textsuperscript{#1}}}
|
||||
\DeclareOption{dayofweek}{\showdowtrue}
|
||||
\DeclareOption{nodayofweek}{\showdowfalse}
|
||||
\DeclareOption{nodate}{\@dt@nodatetrue}
|
||||
\DeclareOption{24hr}{\settimeformat{xxivtime}}
|
||||
\DeclareOption{12hr}{\settimeformat{ampmtime}}
|
||||
\DeclareOption{oclock}{\settimeformat{oclock}}
|
||||
|
||||
|
||||
\DeclareOption{austrian}{\input{dt-austrian.def}}
|
||||
\DeclareOption{bahasa}{\input{dt-bahasa.def}}
|
||||
\DeclareOption{basque}{\input{dt-basque.def}}
|
||||
\DeclareOption{breton}{\input{dt-breton.def}}
|
||||
\DeclareOption{bulgarian}{\input{dt-bulgarian.def}}
|
||||
\DeclareOption{catalan}{\input{dt-catalan.def}}
|
||||
\DeclareOption{croatian}{\input{dt-croatian.def}}
|
||||
\DeclareOption{czech}{\input{dt-czech.def}}
|
||||
\DeclareOption{danish}{\input{dt-danish.def}}
|
||||
\DeclareOption{dutch}{\input{dt-dutch.def}}
|
||||
\DeclareOption{esperanto}{\input{dt-esperanto.def}}
|
||||
\DeclareOption{estonian}{\input{dt-estonian.def}}
|
||||
\DeclareOption{finnish}{\input{dt-finnish.def}}
|
||||
\DeclareOption{french}{\input{dt-french.def}}
|
||||
\DeclareOption{galician}{\input{dt-galician.def}}
|
||||
\DeclareOption{german}{\input{dt-german.def}}
|
||||
\DeclareOption{greek}{\input{dt-greek.def}}
|
||||
\DeclareOption{hebrew}{\input{dt-hebrew.def}}
|
||||
\DeclareOption{icelandic}{\input{dt-icelandic.def}}
|
||||
\DeclareOption{irish}{\input{dt-irish.def}}
|
||||
\DeclareOption{italian}{\input{dt-italian.def}}
|
||||
\DeclareOption{latin}{\input{dt-latin.def}}
|
||||
\DeclareOption{lsorbian}{\input{dt-lsorbian.def}}
|
||||
\DeclareOption{magyar}{\input{dt-magyar.def}}
|
||||
\DeclareOption{naustrian}{\input{dt-naustrian.def}}
|
||||
\DeclareOption{ngerman}{\input{dt-ngerman.def}}
|
||||
\DeclareOption{norsk}{\input{dt-norsk.def}}
|
||||
\DeclareOption{polish}{\input{dt-polish.def}}
|
||||
\DeclareOption{portuges}{\input{dt-portuges.def}}
|
||||
\DeclareOption{romanian}{\input{dt-romanian.def}}
|
||||
\DeclareOption{russian}{\input{dt-russian.def}}
|
||||
\DeclareOption{samin}{\input{dt-samin.def}}
|
||||
\DeclareOption{scottish}{\input{dt-scottish.def}}
|
||||
\DeclareOption{serbian}{\input{dt-serbian.def}}
|
||||
\DeclareOption{slovak}{\input{dt-slovak.def}}
|
||||
\DeclareOption{slovene}{\input{dt-slovene.def}}
|
||||
\DeclareOption{spanish}{\input{dt-spanish.def}}
|
||||
\DeclareOption{swedish}{\input{dt-swedish.def}}
|
||||
\DeclareOption{turkish}{\input{dt-turkish.def}}
|
||||
\DeclareOption{ukraineb}{\input{dt-ukraineb.def}}
|
||||
\DeclareOption{usorbian}{\input{dt-usorbian.def}}
|
||||
\DeclareOption{welsh}{\input{dt-welsh.def}}
|
||||
|
||||
\ProcessOptions
|
||||
\RequirePackage{ifthen}
|
||||
\if@dt@nodate
|
||||
\typeout{datetime package message : option "nodate" used, so not defining \protect\monthname}
|
||||
\else
|
||||
\providecommand{\monthnameenglish}[1][\month]{%
|
||||
\@orgargctr=#1\relax
|
||||
\ifcase\@orgargctr
|
||||
\PackageError{datetime}{Invalid Month number \the\@orgargctr}{Month numbers should go from 1 (January) to 12 (December)}%
|
||||
\or January%
|
||||
\or February%
|
||||
\or March%
|
||||
\or April%
|
||||
\or May%
|
||||
\or June%
|
||||
\or July%
|
||||
\or August%
|
||||
\or September%
|
||||
\or October%
|
||||
\or November%
|
||||
\or December%
|
||||
\else \PackageError{datetime}{Invalid Month number \the\@orgargctr}{Month numbers should go from 1 (January) to 12 (December)}%
|
||||
\fi}
|
||||
|
||||
\let\monthname=\monthnameenglish
|
||||
\fi
|
||||
\if@dt@nodate
|
||||
\typeout{datetime package message : option "nodate" used, so not defining \protect\shortmonthname}
|
||||
\else
|
||||
\providecommand{\shortmonthnameenglish}[1][\month]{%
|
||||
\@orgargctr=#1\relax
|
||||
\ifcase\@orgargctr
|
||||
\PackageError{datetime}{Invalid Month number \the\@orgargctr}{Month numbers should go from 1 (jan) to 12 (dec)}%
|
||||
\or Jan%
|
||||
\or Feb%
|
||||
\or Mar%
|
||||
\or Apr%
|
||||
\or May%
|
||||
\or Jun%
|
||||
\or Jul%
|
||||
\or Aug%
|
||||
\or Sept%
|
||||
\or Oct%
|
||||
\or Nov%
|
||||
\or Dec%
|
||||
\else%
|
||||
\PackageError{datetime}{Invalid Month number \the\@orgargctr}{Month numbers should go from 1 (jan) to 12 (dec)}%
|
||||
\fi}
|
||||
|
||||
\let\shortmonthname=\shortmonthnameenglish
|
||||
|
||||
\fi
|
||||
\newif\ifleapyear
|
||||
|
||||
\newcount\@dtctr
|
||||
|
||||
\if@dt@nodate
|
||||
\typeout{datetime package message : option "nodate" used, so not defining \protect\dayofweek \space or \protect\shortdayofweek}
|
||||
\else
|
||||
|
||||
\providecommand{\testifleapyear}[1]{%
|
||||
\leapyearfalse
|
||||
\@year=#1\relax
|
||||
\@dtctr=\@year
|
||||
\@modulo{\@dtctr}{400}%
|
||||
\ifnum\@dtctr=0\relax
|
||||
\leapyeartrue % year mod 400 = 0 => leap year
|
||||
\else
|
||||
\@dtctr=\@year
|
||||
\@modulo{\@dtctr}{100}%
|
||||
\ifnum\@dtctr=0\relax
|
||||
\leapyearfalse % year mod 100 = 0 && year mod 400 != 0 => not a leap year
|
||||
\else
|
||||
\@dtctr=\@year
|
||||
\@modulo{\@dtctr}{4}%
|
||||
\ifnum\@dtctr=0\relax
|
||||
\leapyeartrue % year mod 4 = 0 && year mod 100 != 0 => leap year
|
||||
\fi
|
||||
\fi
|
||||
\fi
|
||||
}
|
||||
|
||||
\newcount\dayofyear
|
||||
|
||||
|
||||
\providecommand{\computedayofyear}[3]{%
|
||||
\testifleapyear{#3}%
|
||||
\dayofyear=0\relax
|
||||
\@day=#1\relax \@month=#2\relax \@year=#3\relax
|
||||
\ifcase\@month
|
||||
\or
|
||||
\or \advance\dayofyear by 31\relax
|
||||
\or \advance\dayofyear by 59\relax
|
||||
\or \advance\dayofyear by 90\relax
|
||||
\or \advance\dayofyear by 120\relax
|
||||
\or \advance\dayofyear by 151\relax
|
||||
\or \advance\dayofyear by 181\relax
|
||||
\or \advance\dayofyear by 212\relax
|
||||
\or \advance\dayofyear by 243\relax
|
||||
\or \advance\dayofyear by 273\relax
|
||||
\or \advance\dayofyear by 304\relax
|
||||
\or \advance\dayofyear by 334\relax
|
||||
\else
|
||||
\PackageError{datetime}{Invalid month number}{The second argument to \protect\computedayofyear
|
||||
should lie in the range 1-12}
|
||||
\fi
|
||||
\ifnum\@month>2\relax
|
||||
\ifleapyear\advance\dayofyear by 1\relax\fi
|
||||
\fi
|
||||
\advance\dayofyear by \@day\relax
|
||||
}
|
||||
|
||||
\newcount\dayofweek
|
||||
|
||||
|
||||
\providecommand{\computedayofweek}[3]{%
|
||||
\computedayofyear{#1}{#2}{#3}%
|
||||
\@dtctr=#3\relax
|
||||
\advance\@dtctr by -1901\relax
|
||||
\@modulo{\@dtctr}{28}%
|
||||
\dayofweek=\@dtctr
|
||||
\divide\dayofweek by 4\relax
|
||||
\advance\dayofweek by \@dtctr
|
||||
\advance\dayofweek by 2\relax
|
||||
\@modulo{\dayofweek}{7}%
|
||||
\advance\dayofweek by \dayofyear
|
||||
\advance\dayofweek by -1\relax
|
||||
\@modulo{\dayofweek}{7}%
|
||||
\advance\dayofweek by 1\relax}
|
||||
|
||||
\providecommand{\dayofweekname}[3]{%
|
||||
\computedayofweek{#1}{#2}{#3}%
|
||||
\ifcase\dayofweek
|
||||
\or Sunday%
|
||||
\or Monday%
|
||||
\or Tuesday%
|
||||
\or Wednesday%
|
||||
\or Thursday%
|
||||
\or Friday%
|
||||
\or Saturday%
|
||||
\fi}
|
||||
|
||||
\providecommand{\shortdayofweekname}[3]{%
|
||||
\computedayofweek{#1}{#2}{#3}%
|
||||
\ifcase\dayofweek
|
||||
\or Sun%
|
||||
\or Mon%
|
||||
\or Tue%
|
||||
\or Wed%
|
||||
\or Thu%
|
||||
\or Fri%
|
||||
\or Sat%
|
||||
\fi}
|
||||
\fi
|
||||
\if@dt@nodate
|
||||
\else
|
||||
\def\today{\formatdate{\day}{\month}{\year}}
|
||||
\fi
|
||||
\if@dt@nodate
|
||||
\else
|
||||
\@ifundefined{dateenglish}{}{\let\dateenglish\longdate}
|
||||
\@ifundefined{dateaustrian}{}{\input{dt-austrian.def}}
|
||||
\@ifundefined{datebahasa}{}{\input{dt-bahasa.def}}
|
||||
\@ifundefined{datebasque}{}{\input{dt-basque.def}}
|
||||
\@ifundefined{datebreton}{}{\input{dt-breton.def}}
|
||||
\@ifundefined{datebulgarian}{}{\input{dt-bulgarian.def}}
|
||||
\@ifundefined{datecatalan}{}{\input{dt-catalan.def}}
|
||||
\@ifundefined{datecroatian}{}{\input{dt-croatian.def}}
|
||||
\@ifundefined{dateczech}{}{\input{dt-czech.def}}
|
||||
\@ifundefined{datedanish}{}{\input{dt-danish.def}}
|
||||
\@ifundefined{datedutch}{}{\input{dt-dutch.def}}
|
||||
\@ifundefined{dateesperanto}{}{\input{dt-esperanto.def}}
|
||||
\@ifundefined{dateestonian}{}{\input{dt-estonian.def}}
|
||||
\@ifundefined{datefinnish}{}{\input{dt-finnish.def}}
|
||||
\@ifundefined{datefrench}{}{\input{dt-french.def}}
|
||||
\@ifundefined{dategalician}{}{\input{dt-galician.def}}
|
||||
\@ifundefined{dategerman}{}{\input{dt-german.def}}
|
||||
\@ifundefined{dategreek}{}{\input{dt-greek.def}}
|
||||
\@ifundefined{datehebrew}{}{\input{dt-hebrew.def}}
|
||||
\@ifundefined{dateicelandic}{}{\input{dt-icelandic.def}}
|
||||
\@ifundefined{dateirish}{}{\input{dt-irish.def}}
|
||||
\@ifundefined{dateitalian}{}{\input{dt-italian.def}}
|
||||
\@ifundefined{datelatin}{}{\input{dt-latin.def}}
|
||||
\@ifundefined{datelsorbian}{}{\input{dt-lsorbian.def}}
|
||||
\@ifundefined{datemagyar}{}{\input{dt-magyar.def}}
|
||||
\@ifundefined{datenaustrian}{}{\input{dt-naustrian.def}}
|
||||
\@ifundefined{datengerman}{}{\input{dt-ngerman.def}}
|
||||
\@ifundefined{datenorsk}{}{\input{dt-norsk.def}}
|
||||
\@ifundefined{datepolish}{}{\input{dt-polish.def}}
|
||||
\@ifundefined{dateportuges}{}{\input{dt-portuges.def}}
|
||||
\@ifundefined{dateromanian}{}{\input{dt-romanian.def}}
|
||||
\@ifundefined{daterussian}{}{\input{dt-russian.def}}
|
||||
\@ifundefined{datesamin}{}{\input{dt-samin.def}}
|
||||
\@ifundefined{datescottish}{}{\input{dt-scottish.def}}
|
||||
\@ifundefined{dateserbian}{}{\input{dt-serbian.def}}
|
||||
\@ifundefined{dateslovak}{}{\input{dt-slovak.def}}
|
||||
\@ifundefined{dateslovene}{}{\input{dt-slovene.def}}
|
||||
\@ifundefined{datespanish}{}{\input{dt-spanish.def}}
|
||||
\@ifundefined{dateswedish}{}{\input{dt-swedish.def}}
|
||||
\@ifundefined{dateturkish}{}{\input{dt-turkish.def}}
|
||||
\@ifundefined{dateukraineb}{}{\input{dt-ukraineb.def}}
|
||||
\@ifundefined{dateusorbian}{}{\input{dt-usorbian.def}}
|
||||
\@ifundefined{datewelsh}{}{\input{dt-welsh.def}}
|
||||
\fi
|
||||
\if@dt@nodate
|
||||
\typeout{datetime package message : option "nodate" used, so not defining \protect\newdateformat}
|
||||
\else
|
||||
|
||||
\providecommand\THEDAY{\the\@day}
|
||||
\providecommand\THEMONTH{\the\@month}
|
||||
\providecommand\THEYEAR{\the\@year}
|
||||
\let\c@DAY=\@day
|
||||
\let\c@MONTH=\@month
|
||||
\let\c@YEAR=\@year
|
||||
|
||||
\providecommand{\dateformat}[4]{\@day=#2\relax\@month=#3\relax\@year=#4\relax#1}
|
||||
|
||||
\providecommand{\newdateformat}[2]{%
|
||||
\@ifundefined{#1}{\expandafter\def\csname#1\endcsname{\renewcommand{\formatdate}{\dateformat{#2}}}}{%
|
||||
\PackageError{datetime}{Can't create new date format, command \textbackslash#1 already defined}{You will need to
|
||||
give you new date format a different name}}}
|
||||
\fi
|
||||
|
||||
\newcount\c@HOUR
|
||||
\newcount\c@HOURXII
|
||||
\newcount\c@MINUTE
|
||||
\newcount\c@TOHOUR
|
||||
\newcount\c@TOMINUTE
|
||||
\def\THEHOUR{\the\c@HOUR}
|
||||
\def\THEHOURXII{\the\c@HOURXII}
|
||||
\def\THEMINUTE{\the\c@MINUTE}
|
||||
\def\THETOHOUR{\the\c@TOHOUR}
|
||||
\def\THETOMINUTE{\the\c@TOMINUTE}
|
||||
|
||||
\providecommand{\newtimeformat}[2]{%
|
||||
\@ifundefined{#1}{%
|
||||
\expandafter\def\csname#1\endcsname{%
|
||||
\c@HOUR=\time%
|
||||
\divide\c@HOUR by 60\relax
|
||||
\c@HOURXII=\c@HOUR
|
||||
\ifnum\c@HOURXII>12
|
||||
\advance\c@HOURXII by -12\relax
|
||||
\fi
|
||||
\c@MINUTE=\time%
|
||||
\@modulo{\c@MINUTE}{60}%
|
||||
\c@TOHOUR=\c@HOURXII
|
||||
\advance\c@TOHOUR by 1\relax
|
||||
\@modulo{\c@TOHOUR}{12}%
|
||||
\c@TOMINUTE=\c@MINUTE
|
||||
\advance\c@TOMINUTE by -60\relax
|
||||
\multiply\c@TOMINUTE by -1\relax
|
||||
#2
|
||||
}}{%
|
||||
\PackageError{datetime}{Command \textbackslash#1 already defined}{%
|
||||
You can't create a new time format called "#1" as the command \textbackslash#1 already exists}}}
|
||||
\newtimeformat{xxivtime}{\twodigit\THEHOUR:\twodigit\THEMINUTE}
|
||||
|
||||
\newtimeformat{ampmtime}{\THEHOURXII:\twodigit\THEMINUTE\ifthenelse{\value{HOUR}<12}{\amname}{\ifthenelse{\time=720}{ \noon}{\pmname}}}
|
||||
|
||||
\newtimeformat{oclock}{\ifthenelse{\time=0 \or \time=720}{%
|
||||
\ifthenelse{\time=0}{\midnight}{\noon}}{%
|
||||
\ifthenelse{\value{MINUTE}=0}{%
|
||||
\Numberstring{HOUR} \oclock}{%
|
||||
\ifthenelse{\value{MINUTE}=15}{%
|
||||
\quarterpast\ \Numberstring{HOUR}}{%
|
||||
\ifthenelse{\value{MINUTE}=30}{%
|
||||
\halfpast\ \Numberstring{HOUR}}{%
|
||||
\ifthenelse{\value{MINUTE}=45}{%
|
||||
\quarterto\ \Numberstring{TOHOUR}}{%
|
||||
\ifthenelse{\value{MINUTE}<30}{%
|
||||
\Numberstring{MINUTE} \ifthenelse{\value{MINUTE}=1}{minute}{minutes} past \Numberstring{HOURXII}}{%
|
||||
\Numberstring{TOMINUTE} \ifthenelse{\value{TOMINUTE}=1}{minute}{minutes} to \Numberstring{TOHOUR}}}}}}
|
||||
\ifthenelse{\value{HOUR}<12}{%
|
||||
\amstring}{%
|
||||
\pmstring}}}
|
||||
|
||||
\providecommand{\amname}{am}
|
||||
\providecommand{\pmname}{pm}
|
||||
\providecommand{\amstring}{in the morning}
|
||||
\providecommand{\pmstring}{in the afternoon}
|
||||
\providecommand{\halfpast}{Half past}
|
||||
\providecommand{\quarterpast}{Quarter past}
|
||||
\providecommand{\quarterto}{Quarter to}
|
||||
\providecommand{\noon}{Noon}
|
||||
\providecommand{\midnight}{Midnight}
|
||||
\providecommand{\oclockstring}{O'Clock}
|
||||
|
||||
\newcount\pdftimectr
|
||||
\newcount\pdfdatectr
|
||||
|
||||
\pdftimectr=0\relax
|
||||
\@dtctr=\time%
|
||||
\divide\@dtctr by 60\relax
|
||||
\multiply\@dtctr by 10000\relax
|
||||
\pdftimectr=\@dtctr
|
||||
\@dtctr=\time%
|
||||
\@modulo{\@dtctr}{60}%
|
||||
\multiply\@dtctr by 100\relax
|
||||
\advance\pdftimectr by \@dtctr
|
||||
\pdfdatectr=\day
|
||||
\@dtctr=\month
|
||||
\multiply\@dtctr by 100\relax
|
||||
\advance\pdfdatectr by \@dtctr
|
||||
\@dtctr=\year
|
||||
\multiply\@dtctr by 10000\relax
|
||||
\advance\pdfdatectr by \@dtctr
|
||||
\ifnum\pdftimectr<100000
|
||||
\edef\pdfdate{\the\pdfdatectr0\the\pdftimectr}
|
||||
\else
|
||||
\edef\pdfdate{\the\pdfdatectr\the\pdftimectr}
|
||||
\fi
|
||||
\endinput
|
||||
%%
|
||||
%% End of file `datetime.sty'.
|
587
doc/source/user_guide/fmtcount.sty
Normal file
@ -0,0 +1,587 @@
|
||||
%%
|
||||
%% This is file `fmtcount.sty',
|
||||
%% generated with the docstrip utility.
|
||||
%%
|
||||
%% The original source files were:
|
||||
%%
|
||||
%% datetime.dtx (with options: `fmtcount')
|
||||
%% Copyright (C) 2000 Nicola Talbot, all rights reserved.
|
||||
%% If you modify this file, you must change its name first.
|
||||
%% You are NOT ALLOWED to distribute this file alone. You are NOT
|
||||
%% ALLOWED to take money for the distribution or use of either this
|
||||
%% file or a changed version, except for a nominal charge for copying
|
||||
%% etc.
|
||||
%% \CharacterTable
|
||||
%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
|
||||
%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
|
||||
%% Digits \0\1\2\3\4\5\6\7\8\9
|
||||
%% Exclamation \! Double quote \" Hash (number) \#
|
||||
%% Dollar \$ Percent \% Ampersand \&
|
||||
%% Acute accent \' Left paren \( Right paren \)
|
||||
%% Asterisk \* Plus \+ Comma \,
|
||||
%% Minus \- Point \. Solidus \/
|
||||
%% Colon \: Semicolon \; Less than \<
|
||||
%% Equals \= Greater than \> Question mark \?
|
||||
%% Commercial at \@ Left bracket \[ Backslash \\
|
||||
%% Right bracket \] Circumflex \^ Underscore \_
|
||||
%% Grave accent \` Left brace \{ Vertical bar \|
|
||||
%% Right brace \} Tilde \~}
|
||||
\NeedsTeXFormat{LaTeX2e}
|
||||
\ProvidesPackage{fmtcount}[2004/10/22 v1.0]
|
||||
\RequirePackage{ifthen}
|
||||
\newcount\@DT@modctr
|
||||
\def\@modulo#1#2{%
|
||||
\@DT@modctr=#1\relax
|
||||
\divide \@DT@modctr by #2\relax
|
||||
\multiply \@DT@modctr by #2\relax
|
||||
\advance #1 by -\@DT@modctr}
|
||||
\providecommand{\fmtord}[1]{#1}
|
||||
\newcount\@ordinalctr
|
||||
\newcount\@orgargctr
|
||||
\def\@ordinal#1{%
|
||||
\@orgargctr=#1\relax
|
||||
\@ordinalctr=#1%
|
||||
\@modulo{\@ordinalctr}{100}%
|
||||
\ifnum\@ordinalctr=11
|
||||
\the\@orgargctr\fmtord{th}%
|
||||
\else
|
||||
\ifnum\@ordinalctr=12
|
||||
\the\@orgargctr\fmtord{th}%
|
||||
\else
|
||||
\ifnum\@ordinalctr=13
|
||||
\the\@orgargctr\fmtord{th}%
|
||||
\else
|
||||
\@modulo{\@ordinalctr}{10}%
|
||||
\ifcase\@ordinalctr
|
||||
\the\@orgargctr\fmtord{th}% case 0
|
||||
\or \the\@orgargctr\fmtord{st}% case 1
|
||||
\or \the\@orgargctr\fmtord{nd}% case 2
|
||||
\or \the\@orgargctr\fmtord{rd}% case 3
|
||||
\else
|
||||
\the\@orgargctr\fmtord{th}% default case
|
||||
\fi
|
||||
\fi
|
||||
\fi
|
||||
\fi
|
||||
}
|
||||
\newcommand{\@@unitstring}[1]{%
|
||||
\ifcase#1\relax
|
||||
zero%
|
||||
\or one%
|
||||
\or two%
|
||||
\or three%
|
||||
\or four%
|
||||
\or five%
|
||||
\or six%
|
||||
\or seven%
|
||||
\or eight%
|
||||
\or nine%
|
||||
\fi
|
||||
}
|
||||
|
||||
\newcommand{\@@tenstring}[1]{%
|
||||
\ifcase#1\relax
|
||||
\or ten%
|
||||
\or twenty%
|
||||
\or thirty%
|
||||
\or fourty%
|
||||
\or fifty%
|
||||
\or sixty%
|
||||
\or seventy%
|
||||
\or eighty%
|
||||
\or ninety%
|
||||
\fi
|
||||
}
|
||||
|
||||
\newcommand{\@@teenstring}[1]{%
|
||||
\ifcase#1\relax
|
||||
ten%
|
||||
\or eleven%
|
||||
\or twelve%
|
||||
\or thirteen%
|
||||
\or fourteen%
|
||||
\or fifteen%
|
||||
\or sixteen%
|
||||
\or seventeen%
|
||||
\or eighteen%
|
||||
\or nineteen%
|
||||
\fi
|
||||
}
|
||||
|
||||
\newcommand{\@@Unitstring}[1]{%
|
||||
\ifcase#1\relax
|
||||
Zero%
|
||||
\or One%
|
||||
\or Two%
|
||||
\or Three%
|
||||
\or Four%
|
||||
\or Five%
|
||||
\or Six%
|
||||
\or Seven%
|
||||
\or Eight%
|
||||
\or Nine%
|
||||
\fi
|
||||
}
|
||||
|
||||
\newcommand{\@@Tenstring}[1]{%
|
||||
\ifcase#1\relax
|
||||
\or Ten%
|
||||
\or Twenty%
|
||||
\or Thirty%
|
||||
\or Fourty%
|
||||
\or Fifty%
|
||||
\or Sixty%
|
||||
\or Seventy%
|
||||
\or Eighty%
|
||||
\or Ninety%
|
||||
\fi
|
||||
}
|
||||
|
||||
\newcommand{\@@Teenstring}[1]{%
|
||||
\ifcase#1\relax
|
||||
Ten%
|
||||
\or Eleven%
|
||||
\or Twelve%
|
||||
\or Thirteen%
|
||||
\or Fourteen%
|
||||
\or Fifteen%
|
||||
\or Sixteen%
|
||||
\or Seventeen%
|
||||
\or Eighteen%
|
||||
\or Nineteen%
|
||||
\fi
|
||||
}
|
||||
|
||||
\newcount\strctr
|
||||
\newcommand{\@@numberstring}[1]{%
|
||||
\ifnum#1>99000
|
||||
\PackageError{fmtcount}{Out of range}%
|
||||
{This macro only works for values less than 100000}%
|
||||
\else
|
||||
\ifnum#1<0
|
||||
\PackageError{fmtcount}{Negative numbers not permitted}%
|
||||
{This macro does not work for negative numbers, however
|
||||
you can try typing "minus" first, and then pass the modulus of
|
||||
this number}%
|
||||
\fi
|
||||
\fi
|
||||
\strctr=#1\relax \divide\strctr by 1000\relax
|
||||
\ifnum\strctr>9
|
||||
\divide\strctr by 10
|
||||
\ifnum\strctr>1
|
||||
\@tenstring{\strctr}%
|
||||
\strctr=#1 \divide\strctr by 10000
|
||||
\ifnum\strctr>0 -\@unitstring{\strctr}\fi
|
||||
\else
|
||||
\strctr=#1 \divide\strctr by 1000
|
||||
\@teenstring{\strctr}%
|
||||
\fi
|
||||
\ \@thousand%
|
||||
\else
|
||||
\ifnum\strctr>0 \@unitstring{\strctr}\ \@thousand\fi
|
||||
\fi
|
||||
\strctr=#1\relax \@modulo{\strctr}{1000}%
|
||||
\divide\strctr by 100
|
||||
\ifnum\strctr>0
|
||||
\ifnum#1>1000 \ \fi\@unitstring{\strctr}\ \@hundred%
|
||||
\fi
|
||||
\strctr=#1\relax \@modulo{\strctr}{100}%
|
||||
\ifnum#1>100 \ifnum\strctr>0 \ and \fi\fi
|
||||
\ifnum\strctr>19
|
||||
\divide\strctr by 10
|
||||
\@tenstring{\strctr}%
|
||||
\strctr=#1\relax \@modulo{\strctr}{10}%
|
||||
\ifnum\strctr>0
|
||||
-\@unitstring{\strctr}%
|
||||
\fi
|
||||
\else
|
||||
\ifnum\strctr<10
|
||||
\ifnum\strctr=0
|
||||
\ifnum#1<100 \@unitstring{\strctr}\fi
|
||||
\else
|
||||
\@unitstring{\strctr}%
|
||||
\fi
|
||||
\else
|
||||
\@modulo{\strctr}{10}%
|
||||
\@teenstring{\strctr}%
|
||||
\fi
|
||||
\fi
|
||||
}
|
||||
|
||||
\newcommand{\@numberstring}[1]{%
|
||||
\let\@unitstring=\@@unitstring \let\@teenstring=\@@teenstring \let\@tenstring=\@@tenstring
|
||||
\def\@hundred{hundred}\def\@thousand{thousand}%
|
||||
\@@numberstring{#1}}
|
||||
|
||||
\newcommand{\@Numberstring}[1]{%
|
||||
\let\@unitstring=\@@Unitstring \let\@teenstring=\@@Teenstring \let\@tenstring=\@@Tenstring
|
||||
\def\@hundred{Hundred}\def\@thousand{Thousand}%
|
||||
\@@numberstring{#1}}
|
||||
\newcommand{\@@unitthstring}[1]{%
|
||||
\ifcase#1\relax
|
||||
zeroth%
|
||||
\or first%
|
||||
\or second%
|
||||
\or third%
|
||||
\or fourth%
|
||||
\or fifth%
|
||||
\or sixth%
|
||||
\or seventh%
|
||||
\or eighth%
|
||||
\or nineth%
|
||||
\fi
|
||||
}
|
||||
|
||||
\newcommand{\@@tenthstring}[1]{%
|
||||
\ifcase#1\relax
|
||||
\or tenth%
|
||||
\or twentieth%
|
||||
\or thirtieth%
|
||||
\or fourtieth%
|
||||
\or fiftieth%
|
||||
\or sixtieth%
|
||||
\or seventieth%
|
||||
\or eightieth%
|
||||
\or ninetieth%
|
||||
\fi
|
||||
}
|
||||
|
||||
\newcommand{\@@teenthstring}[1]{%
|
||||
\ifcase#1\relax
|
||||
tenth%
|
||||
\or eleventh%
|
||||
\or twelfth%
|
||||
\or thirteenth%
|
||||
\or fourteenth%
|
||||
\or fifteenth%
|
||||
\or sixteenth%
|
||||
\or seventeenth%
|
||||
\or eighteenth%
|
||||
\or nineteenth%
|
||||
\fi
|
||||
}
|
||||
|
||||
\newcommand{\@@Unitthstring}[1]{%
|
||||
\ifcase#1\relax
|
||||
Zeroth%
|
||||
\or First%
|
||||
\or Second%
|
||||
\or Third%
|
||||
\or Fourth%
|
||||
\or Fifth%
|
||||
\or Sixth%
|
||||
\or Seventh%
|
||||
\or Eighth%
|
||||
\or Nineth%
|
||||
\fi
|
||||
}
|
||||
|
||||
\newcommand{\@@Tenthstring}[1]{%
|
||||
\ifcase#1\relax
|
||||
\or Tenth%
|
||||
\or Twentieth%
|
||||
\or Thirtieth%
|
||||
\or Fourtieth%
|
||||
\or Fiftieth%
|
||||
\or Sixtieth%
|
||||
\or Seventieth%
|
||||
\or Eightieth%
|
||||
\or Ninetieth%
|
||||
\fi
|
||||
}
|
||||
|
||||
\newcommand{\@@Teenthstring}[1]{%
|
||||
\ifcase#1\relax
|
||||
Tenth%
|
||||
\or Eleventh%
|
||||
\or Twelfth%
|
||||
\or Thirteenth%
|
||||
\or Fourteenth%
|
||||
\or Fifteenth%
|
||||
\or Sixteenth%
|
||||
\or Seventeenth%
|
||||
\or Eighteenth%
|
||||
\or Nineteenth%
|
||||
\fi
|
||||
}
|
||||
|
||||
\newcommand{\@@ordinalstring}[1]{%
|
||||
\ifnum#1>99000
|
||||
\PackageError{fmtcount}{Out of range}%
|
||||
{This macro only works for values less than 100000}%
|
||||
\else
|
||||
\ifnum#1<0
|
||||
\PackageError{fmtcount}{Negative numbers not permitted}%
|
||||
{This macro does not work for negative numbers, however
|
||||
you can try typing "minus" first, and then pass the modulus of
|
||||
this number}%
|
||||
\fi
|
||||
\fi
|
||||
\strctr=#1\relax \divide\strctr by 1000\relax
|
||||
\ifnum\strctr>9
|
||||
\divide\strctr by 10
|
||||
\ifnum\strctr>1
|
||||
\@tenstring{\strctr}%
|
||||
\strctr=#1 \divide\strctr by 10000
|
||||
\ifnum\strctr>0 -\@unitstring{\strctr}\fi
|
||||
\else
|
||||
\strctr=#1 \divide\strctr by 1000
|
||||
\@teenstring{\strctr}%
|
||||
\fi
|
||||
\strctr=#1\relax \@modulo{\strctr}{1000}%
|
||||
\ifnum\strctr=0\ \@thousandth\else\ \@thousand \fi
|
||||
\else
|
||||
\ifnum\strctr>0\relax
|
||||
\@unitstring{\strctr}%
|
||||
\strctr=#1\relax \@modulo{\strctr}{1000}%
|
||||
\ifnum\strctr=0\ \@thousandth\else\ \@thousand\fi
|
||||
\fi
|
||||
\fi
|
||||
\strctr=#1\relax \@modulo{\strctr}{1000}%
|
||||
\divide\strctr by 100
|
||||
\ifnum\strctr>0
|
||||
\ifnum#1>1000 \ \fi\@unitstring{\strctr}%
|
||||
\strctr=#1\relax \@modulo{\strctr}{100}%
|
||||
\ifnum\strctr=0\ \@hundredth\else\ \@hundred\fi
|
||||
\fi
|
||||
\strctr=#1\relax \@modulo{\strctr}{100}%
|
||||
\ifnum#1>100 \ifnum\strctr>0\ and \fi\fi
|
||||
\ifnum\strctr>19
|
||||
\@dtctr=\strctr
|
||||
\divide\strctr by 10
|
||||
\@modulo{\@dtctr}{10}%
|
||||
\ifnum\@dtctr=0 \@tenthstring{\strctr}\else \@tenstring{\strctr}\fi
|
||||
\strctr=#1\relax \@modulo{\strctr}{10}%
|
||||
\ifnum\strctr>0
|
||||
-\@unitthstring{\strctr}%
|
||||
\fi
|
||||
\else
|
||||
\ifnum\strctr<10
|
||||
\ifnum\strctr=0
|
||||
\ifnum#1<100 \@unitthstring{\strctr}\fi
|
||||
\else
|
||||
\@unitthstring{\strctr}%
|
||||
\fi
|
||||
\else
|
||||
\@modulo{\strctr}{10}%
|
||||
\@teenthstring{\strctr}%
|
||||
\fi
|
||||
\fi
|
||||
}
|
||||
|
||||
\newcommand{\@ordinalstring}[1]{%
|
||||
\let\@unitthstring=\@@unitthstring \let\@teenthstring=\@@teenthstring \let\@tenthstring=\@@tenthstring
|
||||
\let\@unitstring=\@@unitstring \let\@teenstring=\@@teenstring \let\@tenstring=\@@tenstring
|
||||
\def\@hundred{hundred}\def\@thousand{thousand}%
|
||||
\def\@hundredth{hundredth}\def\@thousandth{thousandth}%
|
||||
\@@ordinalstring{#1}}
|
||||
|
||||
\newcommand{\@Ordinalstring}[1]{%
|
||||
\let\@unitthstring=\@@Unitthstring \let\@teenthstring=\@@Teenthstring \let\@tenthstring=\@@Tenthstring
|
||||
\let\@unitstring=\@@Unitstring \let\@teenstring=\@@Teenstring \let\@tenstring=\@@Tenstring
|
||||
\def\@hundred{Hundred}\def\@thousand{Thousand}%
|
||||
\def\@hundredth{Hundredth}\def\@thousandth{Thousandth}%
|
||||
\@@ordinalstring{#1}}
|
||||
\newcount\c@padzeroesN
|
||||
\c@padzeroesN=1\relax
|
||||
\providecommand{\padzeroes}[1][17]{\c@padzeroesN=#1}
|
||||
|
||||
\newif\if@DT@padzeroes
|
||||
\newcount\@DT@loopN
|
||||
\newcount\@DT@X
|
||||
\newcommand{\@binary}[1]{%
|
||||
\@DT@padzeroestrue
|
||||
\@DT@loopN=17\relax
|
||||
\strctr=65536\relax
|
||||
\@DT@X=#1\relax
|
||||
\loop
|
||||
\@DT@modctr=\@DT@X
|
||||
\divide\@DT@modctr by \strctr
|
||||
\ifthenelse{\boolean{@DT@padzeroes} \and \(\@DT@modctr=0\) \and \(\@DT@loopN>\c@padzeroesN\)}{}{\the\@DT@modctr}%
|
||||
\ifnum\@DT@modctr=0\else\@DT@padzeroesfalse\fi
|
||||
\multiply\@DT@modctr by \strctr
|
||||
\advance\@DT@X by -\@DT@modctr
|
||||
\divide\strctr by 2\relax
|
||||
\advance\@DT@loopN by -1\relax
|
||||
\ifnum\strctr>1
|
||||
\repeat
|
||||
\the\@DT@X}
|
||||
\newcommand{\@octal}[1]{%
|
||||
\ifnum#1>32768
|
||||
\PackageError{fmtcount}{Value of counter too large for \protect\@octal}{Maximum value 32768}
|
||||
\else
|
||||
\@DT@padzeroestrue
|
||||
\@DT@loopN=6\relax
|
||||
\strctr=32768\relax
|
||||
\@DT@X=#1\relax
|
||||
\loop
|
||||
\@DT@modctr=\@DT@X
|
||||
\divide\@DT@modctr by \strctr
|
||||
\ifthenelse{\boolean{@DT@padzeroes} \and \(\@DT@modctr=0\) \and \(\@DT@loopN>\c@padzeroesN\)}{}{\the\@DT@modctr}%
|
||||
\ifnum\@DT@modctr=0\else\@DT@padzeroesfalse\fi
|
||||
\multiply\@DT@modctr by \strctr
|
||||
\advance\@DT@X by -\@DT@modctr
|
||||
\divide\strctr by 8\relax
|
||||
\advance\@DT@loopN by -1\relax
|
||||
\ifnum\strctr>1
|
||||
\repeat
|
||||
\the\@DT@X
|
||||
\fi}
|
||||
\newcommand{\@@hexadecimal}[1]{\ifcase#10\or1\or2\or3\or4\or5\or6\or7\or8\or9\or a\or b\or c\or d\or e\or f\fi}
|
||||
|
||||
\newcommand{\@hexadecimal}[1]{%
|
||||
\@DT@padzeroestrue
|
||||
\@DT@loopN=5\relax
|
||||
\strctr=65536\relax
|
||||
\@DT@X=#1\relax
|
||||
\loop
|
||||
\@DT@modctr=\@DT@X
|
||||
\divide\@DT@modctr by \strctr
|
||||
\ifthenelse{\boolean{@DT@padzeroes} \and \(\@DT@modctr=0\) \and \(\@DT@loopN>\c@padzeroesN\)}{}{\@@hexadecimal\@DT@modctr}%
|
||||
\ifnum\@DT@modctr=0\else\@DT@padzeroesfalse\fi
|
||||
\multiply\@DT@modctr by \strctr
|
||||
\advance\@DT@X by -\@DT@modctr
|
||||
\divide\strctr by 16\relax
|
||||
\advance\@DT@loopN by -1\relax
|
||||
\ifnum\strctr>1
|
||||
\repeat
|
||||
\@@hexadecimal\@DT@X}
|
||||
|
||||
\newcommand{\@@Hexadecimal}[1]{\ifcase#10\or1\or2\or3\or4\or5\or6\or7\or8\or9\or A\or B\or C\or D\or E\or F\fi}
|
||||
|
||||
\newcommand{\@Hexadecimal}[1]{%
|
||||
\@DT@padzeroestrue
|
||||
\@DT@loopN=5\relax
|
||||
\strctr=65536\relax
|
||||
\@DT@X=#1\relax
|
||||
\loop
|
||||
\@DT@modctr=\@DT@X
|
||||
\divide\@DT@modctr by \strctr
|
||||
\ifthenelse{\boolean{@DT@padzeroes} \and \(\@DT@modctr=0\) \and \(\@DT@loopN>\c@padzeroesN\)}{}{\@@Hexadecimal\@DT@modctr}%
|
||||
\ifnum\@DT@modctr=0\else\@DT@padzeroesfalse\fi
|
||||
\multiply\@DT@modctr by \strctr
|
||||
\advance\@DT@X by -\@DT@modctr
|
||||
\divide\strctr by 16\relax
|
||||
\advance\@DT@loopN by -1\relax
|
||||
\ifnum\strctr>1
|
||||
\repeat
|
||||
\@@Hexadecimal\@DT@X}
|
||||
|
||||
\newcommand{\@aaalph}[1]{%
|
||||
\@DT@loopN=#1\relax
|
||||
\advance\@DT@loopN by -1\relax
|
||||
\divide\@DT@loopN by 26\relax
|
||||
\@DT@modctr=\@DT@loopN
|
||||
\multiply\@DT@modctr by 26\relax
|
||||
\@DT@X=#1\relax
|
||||
\advance\@DT@X by -1\relax
|
||||
\advance\@DT@X by -\@DT@modctr
|
||||
\advance\@DT@loopN by 1\relax
|
||||
\advance\@DT@X by 1\relax
|
||||
\loop
|
||||
\@alph\@DT@X
|
||||
\advance\@DT@loopN by -1\relax
|
||||
\ifnum\@DT@loopN>0
|
||||
\repeat
|
||||
}
|
||||
|
||||
\newcommand{\@AAAlph}[1]{%
|
||||
\@DT@loopN=#1\relax
|
||||
\advance\@DT@loopN by -1\relax
|
||||
\divide\@DT@loopN by 26\relax
|
||||
\@DT@modctr=\@DT@loopN
|
||||
\multiply\@DT@modctr by 26\relax
|
||||
\@DT@X=#1\relax
|
||||
\advance\@DT@X by -1\relax
|
||||
\advance\@DT@X by -\@DT@modctr
|
||||
\advance\@DT@loopN by 1\relax
|
||||
\advance\@DT@X by 1\relax
|
||||
\loop
|
||||
\@Alph\@DT@X
|
||||
\advance\@DT@loopN by -1\relax
|
||||
\ifnum\@DT@loopN>0
|
||||
\repeat
|
||||
}
|
||||
|
||||
\newcommand{\@abalph}[1]{%
|
||||
\ifnum#1>17576
|
||||
\PackageError{fmtcount}{Value of counter too large for \protect\@abalph}{Maximum value 17576}
|
||||
\else
|
||||
\@DT@padzeroestrue
|
||||
\strctr=17576\relax
|
||||
\@DT@X=#1\relax
|
||||
\advance\@DT@X by -1\relax
|
||||
\loop
|
||||
\@DT@modctr=\@DT@X
|
||||
\divide\@DT@modctr by \strctr
|
||||
\ifthenelse{\boolean{@DT@padzeroes} \and \(\@DT@modctr=1\)}{}{\@alph\@DT@modctr}%
|
||||
\ifnum\@DT@modctr=1\else\@DT@padzeroesfalse\fi
|
||||
\multiply\@DT@modctr by \strctr
|
||||
\advance\@DT@X by -\@DT@modctr
|
||||
\divide\strctr by 26\relax
|
||||
\ifnum\strctr>1
|
||||
\repeat
|
||||
\advance\@DT@X by 1\relax
|
||||
\@alph\@DT@X
|
||||
\fi}
|
||||
|
||||
\newcommand{\@ABAlph}[1]{%
|
||||
\ifnum#1>17576
|
||||
\PackageError{fmtcount}{Value of counter too large for \protect\@ABAlph}{Maximum value 17576}
|
||||
\else
|
||||
\@DT@padzeroestrue
|
||||
\strctr=17576\relax
|
||||
\@DT@X=#1\relax
|
||||
\advance\@DT@X by -1\relax
|
||||
\loop
|
||||
\@DT@modctr=\@DT@X
|
||||
\divide\@DT@modctr by \strctr
|
||||
\ifthenelse{\boolean{@DT@padzeroes} \and \(\@DT@modctr=1\)}{}{\@Alph\@DT@modctr}%
|
||||
\ifnum\@DT@modctr=1\else\@DT@padzeroesfalse\fi
|
||||
\multiply\@DT@modctr by \strctr
|
||||
\advance\@DT@X by -\@DT@modctr
|
||||
\divide\strctr by 26\relax
|
||||
\ifnum\strctr>1
|
||||
\repeat
|
||||
\advance\@DT@X by 1\relax
|
||||
\@Alph\@DT@X
|
||||
\fi}
|
||||
|
||||
\newcommand{\@decimal}[1]{%
|
||||
\ifnum#1>10000
|
||||
\PackageError{fmtcount}{Value of counter too large for \protect\@decimal}{Maximum value 10000}
|
||||
\else
|
||||
\@DT@padzeroestrue
|
||||
\@DT@loopN=6\relax
|
||||
\strctr=10000\relax
|
||||
\@DT@X=#1\relax
|
||||
\loop
|
||||
\@DT@modctr=\@DT@X
|
||||
\divide\@DT@modctr by \strctr
|
||||
\ifthenelse{\boolean{@DT@padzeroes} \and \(\@DT@modctr=0\) \and \(\@DT@loopN>\c@padzeroesN\)}{}{\the\@DT@modctr}%
|
||||
\ifnum\@DT@modctr=0\else\@DT@padzeroesfalse\fi
|
||||
\multiply\@DT@modctr by \strctr
|
||||
\advance\@DT@X by -\@DT@modctr
|
||||
\divide\strctr by 10\relax
|
||||
\advance\@DT@loopN by -1\relax
|
||||
\ifnum\strctr>1
|
||||
\repeat
|
||||
\the\@DT@X
|
||||
\fi}
|
||||
\providecommand{\ordinal}[1]{\expandafter\protect\expandafter\@ordinal{\expandafter\the\csname c@#1\endcsname}}
|
||||
\providecommand{\ordinalstring}[1]{\expandafter\protect\expandafter\@ordinalstring{\expandafter\the\csname c@#1\endcsname}}
|
||||
\providecommand{\Ordinalstring}[1]{\expandafter\protect\expandafter\@Ordinalstring{\expandafter\the\csname c@#1\endcsname}}
|
||||
\providecommand{\numberstring}[1]{\expandafter\protect\expandafter\@numberstring{\expandafter\the\csname c@#1\endcsname}}
|
||||
\providecommand{\Numberstring}[1]{\expandafter\protect\expandafter\@Numberstring{\expandafter\the\csname c@#1\endcsname}}
|
||||
\providecommand{\binary}[1]{\expandafter\protect\expandafter\@binary{\expandafter\the\csname c@#1\endcsname}}
|
||||
\providecommand{\aaalph}[1]{\expandafter\protect\expandafter\@aaalph{\expandafter\the\csname c@#1\endcsname}}
|
||||
\providecommand{\AAAlph}[1]{\expandafter\protect\expandafter\@AAAlph{\expandafter\the\csname c@#1\endcsname}}
|
||||
\providecommand{\abalph}[1]{\expandafter\protect\expandafter\@abalph{\expandafter\the\csname c@#1\endcsname}}
|
||||
\providecommand{\ABAlph}[1]{\expandafter\protect\expandafter\@ABAlph{\expandafter\the\csname c@#1\endcsname}}
|
||||
\providecommand{\hexadecimal}[1]{\expandafter\protect\expandafter\@hexadecimal{\expandafter\the\csname c@#1\endcsname}}
|
||||
\providecommand{\Hexadecimal}[1]{\expandafter\protect\expandafter\@Hexadecimal{\expandafter\the\csname c@#1\endcsname}}
|
||||
\providecommand{\octal}[1]{\expandafter\protect\expandafter\@octal{\expandafter\the\csname c@#1\endcsname}}
|
||||
\providecommand{\decimal}[1]{\expandafter\protect\expandafter\@decimal{\expandafter\the\csname c@#1\endcsname}}
|
||||
\endinput
|
||||
%%
|
||||
%% End of file `fmtcount.sty'.
|
203
doc/source/user_guide/getting_started.tex
Normal file
@ -0,0 +1,203 @@
|
||||
\chapter{Getting Started}
|
||||
|
||||
This chapter gives you a quick overview of running QGIS and examining data available on the QGIS web page.
|
||||
|
||||
|
||||
\section{Installation}
|
||||
\index{installation}
|
||||
Installation of QGIS is documented in Appendix \ref{install_guide}. The Installation Guide is distributed with the QGIS source code and is also available at \url{http://qgis.org}. Under Windows and Mac OSX, QGIS is available as a standard installer package for these platforms.
|
||||
|
||||
|
||||
\section{Sample Data}
|
||||
\index{data!sample}
|
||||
If you do not have any GIS data handy, you can obtain a dataset for Alaska from the QGIS web site at \url{http://qgis.org}. The Alaska data set will be used as the basis for many of the examples and screenshots provided in this document.
|
||||
|
||||
|
||||
\section{Starting QGIS}
|
||||
|
||||
Assuming that QGIS is installed in the PATH, you can start QGIS by
|
||||
typing: \textbf{qgis} at a command prompt or by double clicking on the QGIS application link (or shortcut) on the desktop. Under MS Windows, start QGIS using the Start menu shortcut, and under Mac OSX, double click the icon in your applications folder.
|
||||
%\begin{figure}
|
||||
%\caption{QGIS Main Window}
|
||||
%\end{figure}
|
||||
\subsection{Command Line Options}\index{command line options}
|
||||
QGIS supports a number of options when started from the command line. To get a
|
||||
list of the options, enter \texttt{qgis ---help} on the command line. The usage
|
||||
statement for QGIS is:
|
||||
\small
|
||||
\begin{verbatim}
|
||||
Usage: /home/gsherman/qgis06_rc/bin/qgis [options] [FILES]
|
||||
options:
|
||||
[--snapshot filename] emit snapshot of loaded datasets to given file
|
||||
[--lang language] use language for interface text
|
||||
[--project projectfile] load the given QGIS project
|
||||
[--help] this text
|
||||
FILES:
|
||||
Files specified on the command line can include rasters,
|
||||
vectors, and QGIS project files (.qgs):
|
||||
1. Rasters - Supported formats include GeoTiff, DEM
|
||||
and others supported by GDAL
|
||||
2. Vectors - Supported formats include ESRI Shapefiles
|
||||
and others supported by OGR and PostgreSQL layers using
|
||||
the PostGIS extension
|
||||
|
||||
\end{verbatim}
|
||||
\normalsize
|
||||
\begin{Tip} \caption{\textsc{Example Using command line arguments}}
|
||||
\qgistip{
|
||||
You can start QGIS by specifying one or more data files
|
||||
on the command line. For example, assuming you are in your data directory,
|
||||
you could start QGIS with two shapefiles and a raster file set to
|
||||
load on startup using the following command:
|
||||
\ttfamily{ qgis ak\_shade.tif alaska.shp majrivers.shp}
|
||||
}
|
||||
\end{Tip}
|
||||
|
||||
\section{The QGIS Main Window}\index{main window}
|
||||
When QGIS starts, you are presented with the main window as shown below.
|
||||
|
||||
\begin{figure}[h]
|
||||
\begin{center}
|
||||
\caption{Main window}\label{fig:startup}
|
||||
\includegraphics[scale=.5]{qgis_user_guide_images/startup}
|
||||
\end{center}
|
||||
|
||||
\end{figure}
|
||||
\textsc{Note - Your window decorations (title bar, etc.) may appear different depending on your operating system and window manager}
|
||||
The QGIS main window is divided into five areas:
|
||||
\begin{compactenum}
|
||||
\item The menu bar
|
||||
\item The tool bar
|
||||
\item The map legend
|
||||
\item The map view
|
||||
\item The map overview
|
||||
\item The status bar
|
||||
\end{compactenum}
|
||||
|
||||
These six components of the QGIS interface are described in more detail in the following sections
|
||||
\subsection{The QGIS menu bar}
|
||||
\index{menus}
|
||||
The menu bar provides access to various QGIS features using a standard windows
|
||||
heirachical menu. The top-level menus and a summary of some of the functions provided are:
|
||||
\begin{compactitem}
|
||||
\item File (project open, save, export image, properties)
|
||||
\item Layer (add, show, hide layers)
|
||||
\item View (zoom, refresh)
|
||||
\item Tools (plugin manager, preferences)
|
||||
\item Plugins (menus added by plugins as they are loaded)
|
||||
\item Help (documentation and web links)
|
||||
\end{compactitem}
|
||||
%See Appendix \ref{app_menu} for complete descriptions of the menu items.
|
||||
|
||||
\subsection{Toolbars}
|
||||
\index{toolbars}
|
||||
The toolbars provide access to most of the same functions as the menus, plus
|
||||
additional tools for interacting with the map. Each toolbar item has popup
|
||||
help available. Hold your mouse over the item and a short description of the
|
||||
tool's purpose will be displayed. %See Appendix \ref{app_toolbar} for complete
|
||||
%descriptions and illustrations of the various toolbars.
|
||||
|
||||
\subsection{The QGIS map legend}
|
||||
\index{legend}
|
||||
The map legend area is used to set the visibility and z-ordering of layers.
|
||||
Z-ordering means that layers listed nearer the top of the legend are drawn
|
||||
over layers listed lower down in the legend. The checkbox in each legend entry
|
||||
can be used to show/hide that layer.\index{layer!visibility}
|
||||
\begin{Tip} \caption{\textsc{Viewing the Layer Menu}}\index{layer!context menu}
|
||||
\qgistip{You can display the context menu for any layer in the legend by right-clicking
|
||||
on the layer name. The context menu contains items for working with the layer and viewing
|
||||
its properties.}
|
||||
\end{Tip}
|
||||
|
||||
Each legend entry can show the following mini icons:
|
||||
|
||||
\includegraphics[scale=1]{qgis_user_guide_images/pyramid} This is a raster layer that has pyramids built for it to improve rendering efficiency (see Section \ref{raster_pyramids}).\\
|
||||
\includegraphics[scale=1]{qgis_user_guide_images/no_pyramid} This is a raster that has no pyramid layers (see Section \ref{raster_pyramids}).\\
|
||||
\includegraphics[scale=1]{qgis_user_guide_images/inoverview} This layer is shown in the overview map area as well as in the main map window.\\
|
||||
\includegraphics[scale=1]{qgis_user_guide_images/editable} This is a vector layer that is currently enabled for editing.\\
|
||||
\subsection{The QGIS map view}
|
||||
\index{map!view}
|
||||
This is the 'business end' of QGIS - maps are displayed in this area! The map
|
||||
displayed in this window will depend on the vector and raster layers you have
|
||||
chosen to load (see sections that follow for more info on this). The map view
|
||||
can be panned (shifting to focus of the map display to another region), zoomed
|
||||
in and out, and supports various other actions as described in the toolbar
|
||||
description above. The map view and the legend are tightly bound to each
|
||||
other - the maps in view reflect changes you make in the legend area.
|
||||
\begin{Tip}\caption{\textsc{Zooming the Map with the Mouse
|
||||
Wheel}}\index{zoom!mouse wheel}
|
||||
\qgistip{You can use the mouse wheel to zoom in and out on the map. Place the mouse cursor inside the map area and roll it forward (away from you) to zoom in and backwards (towards you) to zoom out.
|
||||
}
|
||||
\end{Tip}
|
||||
\subsection{The QGIS map overview}
|
||||
\index{map!overview}
|
||||
The map overview area provides a full extent view of layers added to it. Within the view is a rectangle showing the current map extent. This allows you to quickly determine which area of the map you are currently viewing. Note that labels are not rendered to the map overview even if the layers in the map overview have been set up for labelling.
|
||||
|
||||
\subsection{The QGIS map status bar}
|
||||
The status bar shows you your current position in map coordinate (e.g. meters
|
||||
or decimal degress) as the mouse pointer is moved accross the map view. The status bar also shows the view extents of the map view as you pand and zoom in and out. A progress bar in the status bar shows progress of rendering as each layer is drawn to the map view. In some cases such as the gathering of statistics in raster layers, the progress bar will be used to show the status of lengthy operations. At the end of the status bar is a small checkbox which can be used to temporarily prevent layers being rendered to the map view )see Section \ref{subsec:redraw_events} below.
|
||||
|
||||
\section{Rendering}\label{subsec:redraw_events}\index{rendering}
|
||||
By default, QGIS renders all visible layers whenever the map canvas must be refreshed. The events that trigger a refresh of the map canvas include:
|
||||
\begin{compactitem}
|
||||
\item Adding a layer
|
||||
\item Panning or zooming
|
||||
\item Resizing the QGIS window
|
||||
\item Changing the visibility of a layer or layers
|
||||
\end{compactitem}
|
||||
QGIS allows you to control the rendering process in a number of ways.
|
||||
|
||||
\subsection{Scale Dependent Rendering}\index{rendering!scale dependent}
|
||||
Scale dependent rendering allows you to specify the minimum and maximum scales
|
||||
at which a layer will be visible. To set scale dependency rendering, open the
|
||||
properties dialog by double-clicking on the layer in the legend. On the
|
||||
\textit{General} tab, set the minimum and maximum scale values and then click on
|
||||
the \textit{Use scale dependent rendering} checkbox.
|
||||
|
||||
You can determine the scale values by first zooming to the level you want to use
|
||||
an noting the scale value in the QGIS status bar.\index{scale}
|
||||
\subsection{Controlling Map Rendering}
|
||||
Map rendering can be controlled in the following ways:
|
||||
\begin{compactenum}
|
||||
\item Stopping rendering during drawing of the map canvas
|
||||
\item Temporarily suspending rendering
|
||||
\item Setting an option to control the visibility of layers when they are added
|
||||
\end{compactenum}
|
||||
\subsection{Stopping Rendering}\index{rendering!halting}
|
||||
To stop the map drawing, press the ESC key. This will halt the refresh of the
|
||||
map canvas and leave the map partially drawn. It may take a bit of time between
|
||||
pressing ESC and the time the map drawing is halted.
|
||||
\subsection{Suspending Rendering}\index{rendering!suspending}
|
||||
To suspend rendering, click the \textit{Render} checkbox in the lower right
|
||||
corner of the statusbar. When the \textit{Render} box is not checked, QGIS does
|
||||
not redraw the canvas in response to any of the events described in Section
|
||||
\ref{sec:redraw_events}. Examples of when you might want to suspend rendering
|
||||
include:
|
||||
\begin{compactitem}
|
||||
\item Add many layers and symbolize them prior to drawing
|
||||
\item Add one or more large layers and set scale dependency before drawing
|
||||
\item Add one or more large layers and zoom to a specific view before drawing
|
||||
\item Any combination of the above
|
||||
\end{compactitem}
|
||||
Checking the \textit{Render} box enables rendering and causes and immediate
|
||||
refresh of the map canvas.
|
||||
\subsection{Setting Layer Add
|
||||
Option}\index{rendering!options}\index{layers!initial visibility}
|
||||
You can set an option to always load new layers without drawing them. This means
|
||||
the layer will be added to the map, but its visibility checkbox in the legend
|
||||
will be unchecked by default. To set this option, choose \textit{Preferences} from the
|
||||
\textit{Settings} menu and click on the \textit{Rendering} tab. Check the
|
||||
\textit{New layers added to the map are not displayed} checkbox. Any layer added
|
||||
to the map will be off (invisible) by default.
|
||||
\subsection{Updating the Map Display During Rendering}\index{rendering!update
|
||||
during drawing}
|
||||
You can set an option to update the map display as features are drawn. By
|
||||
default, QGIS does not display any features for a layer until the entire layer
|
||||
has been rendered. To update the display as features are read from the
|
||||
datastore, choose \textit{Preferences} from the
|
||||
\textit{Settings} menu and click on the \textit{Rendering} tab. Set the feature
|
||||
count to an appropriate value to update the display during rendering. Setting a
|
||||
value of 0 disables update during drawing (this is the default). Setting a value
|
||||
too low will result in poor performance as the map canvas is continually updated
|
||||
during the reading of the features. A suggested value to start with is 500.
|
||||
|
158
doc/source/user_guide/grass_integration.tex
Normal file
@ -0,0 +1,158 @@
|
||||
\chapter{GRASS}\label{sec:grass}\index{GRASS}
|
||||
The GRASS plugin adds the following features to QGIS:
|
||||
\begin{compactitem}
|
||||
\item Add GRASS vector layers
|
||||
\item Add GRASS raster layers
|
||||
\item Vector layers digitizing
|
||||
\item Changing of the GRASS region
|
||||
\end{compactitem}
|
||||
\section{Starting QGIS with
|
||||
GRASS}\label{sec:starting_grass}\index{GRASS!starting QGIS}
|
||||
When using the GRASS plugin, QGIS can be started in two ways: from the GRASS shell or from a regular shell.
|
||||
\subsection{From GRASS shell}
|
||||
|
||||
If QGIS is started from the GRASS shell (GRASS started by grass57 command), no
|
||||
additional settings are required. \index{GRASS!shell}
|
||||
\subsection{Outside GRASS shell}
|
||||
|
||||
If QGIS is not started from the GRASS shell, the environment variables must be properly set before starting QGIS.
|
||||
|
||||
The path to GRASS libraries must be added to LD\_LIBRARY\_PATH environment
|
||||
variable. For example (in bash): \index{GRASS!environment settings}
|
||||
\begin{verbatim}
|
||||
export LD_LIBRARY_PATH=/usr1/grass57/dist.i686-pc-linux-gnu/lib:$LD_LIBRARY_PATH
|
||||
\end{verbatim}
|
||||
|
||||
The GISBASE environment variable must be set to the full path of the directory where GRASS is installed (the same as used for --with-grass= option). For example (in bash):
|
||||
\begin{verbatim}
|
||||
export GISBASE=/usr1/grass57/dist.i686-pc-linux-gnu
|
||||
\end{verbatim}
|
||||
\section{Loading GRASS Data}\index{GRASS!loading data}
|
||||
With the GRASS plugin loaded, you can load a vector or raster layer using the appropriate button on the toolbar. \begin{Tip}\caption{\textsc{GRASS Data Loading}}
|
||||
\qgistip{If you have problems loading data or QGIS terminates abnormally, check to make sure you have started GRASS properly as described in Section \ref{sec:starting_grass}.
|
||||
}
|
||||
\end{Tip}
|
||||
\section{Vector Data Model}\index{GRASS!vector data model}
|
||||
It is important to understand the GRASS vector data model prior to
|
||||
digitizing.\index{GRASS!digitizing}
|
||||
In general, GRASS uses a topological vector model.\index{GRASS!topology} This
|
||||
means that areas are not represented as closed polygons, but by one or more
|
||||
boundaries. A boundary between two adjacent areas is digitized only once, and it
|
||||
is shared by both areas. Boundaries must be connected without gaps. An area is
|
||||
identified (labeled) by the centroid of the area.
|
||||
|
||||
Besides boundaries and centroids, a vector map can also contain
|
||||
points and lines. All these geometry elements can be mixed
|
||||
in one vector.
|
||||
|
||||
It is possible to store more 'layers' in one vector dataset. For example,
|
||||
fields, forests and lakes can be stored in one vector. Adjacent
|
||||
forest and lake can share the same boundary, but they have separate attribute tables.
|
||||
It is also possible to attach attributes to boundaries. For example, the boundary between lake and forest is a road with different attribute table.
|
||||
%In addition, one geometry element can represent a geometry for more
|
||||
%features. For example, a road can be a marked turistic route at the same
|
||||
%time.
|
||||
|
||||
The 'layer' of the feature is defined by 'field' (sorry for this name).
|
||||
'Field' is the number which defines if the geometry is forest or lake.
|
||||
For now, it can be only a number, in the future GRASS will also support
|
||||
names as fields in the user interface.
|
||||
|
||||
Attributes are stored in external database tables, for example
|
||||
DBF, PostgreSQL, etc.\index{GRASS!attribute storage}
|
||||
|
||||
Attributes in database tables are linked to geometry elements
|
||||
using 'category'.\index{GRASS!attribute linkage} 'Category' (key, ID) is an
|
||||
integer attached to geometry primitives, and it is used as the link to one
|
||||
column in the database table.
|
||||
\begin{Tip}\caption{\textsc{Learning the GRASS Vector Model}}
|
||||
\qgistip{The best way to learn the GRASS vector model and its capabilities
|
||||
is to download the demo mapset from \url{http://mpa.itc.it/radim/g51/g51test-12-multi.tar.gz}.
|
||||
Extract the mapset, add all layers from vector 'multi' to QGIS, and query attributes.
|
||||
Finaly start editing of vector 'multi', to see how those layers are stored.
|
||||
}
|
||||
\end{Tip}
|
||||
\section{Digitizing and Editing Tools}\index{GRASS!digitizing tools}
|
||||
\label{grass_digitising}
|
||||
The digitizing tools for GRASS vector layers are accessed using the \textsl{Edit GRASS Vector Layer} tool on the toolbar. Make sure you have loaded a GRASS vector and it is the selected layer in the legend before clicking on the edit tool. In this release, the vector must exist prior to beginning to edit. The ability to create a new "empty" layer will be added in a future version. Figure \ref{fig:grass_edit} shows the GRASS Edit dialog that is displayed when you click on the edit tool.
|
||||
\begin{figure}[h]
|
||||
\begin{center}
|
||||
\caption{GRASS Edit Dialog}\label{fig:grass_edit}\smallskip
|
||||
\includegraphics[scale=.7]{qgis_user_guide_images/grassedit}
|
||||
\end{center}
|
||||
\end{figure}
|
||||
The tools and settings are discussed in the following sections.
|
||||
\subsection{Toolbar}
|
||||
Table \ref{tab:grass_tools} lists the digitizing tools provided by the GRASS plugin. These correspond to the tool buttons in the toolbar(s) across the top of the dialog.
|
||||
\begin{table}[h]\index{GRASS!digitizing tools}
|
||||
|
||||
\centering
|
||||
\caption{GRASS Digitizing Tools}\label{tab:grass_tools}\medskip
|
||||
\begin{tabular}{|l|p{5in}|}
|
||||
\hline \textbf{Tool} & \textbf{Purpose} \\
|
||||
\hline New Point & digitize new point \\
|
||||
\hline New Line & digitize new line (finish by selecting new tool) \\
|
||||
\hline New Boundary & digitize new boundary (finish by selecting new tool)\\
|
||||
\hline New Centroid & digitize new centroid (label existing area)\\
|
||||
\hline Move vertex & select one vertex of existing line or boundary and identify new position\\
|
||||
\hline Add vertex & add a new vertex to existing line\\
|
||||
\hline Delete vertex & delete one vertex from existing line (confirm selected vertex by another click)\\
|
||||
\hline Move line & select existing line and click on new position\\
|
||||
\hline Split line & split an existing line to 2 parts\\
|
||||
\hline Delete line & delete existing line (confirm selected line by another click)\\
|
||||
\hline Edit attributes & edit attributes of existing element (note that one element can represent more features, see above)\\
|
||||
\hline Mug & close digitizing session\\
|
||||
\hline
|
||||
\end{tabular}
|
||||
\end{table}
|
||||
\subsection{Category Tab}\index{GRASS!category settings}
|
||||
This tab allows you to set the way in which the category will be assigned to each new feature and/or assign a category to a feature.
|
||||
\begin{compactitem}
|
||||
\item Mode: what category should be attached to geometry
|
||||
\begin{compactitem}
|
||||
\item Next not used - next category not yet used in vector
|
||||
\item Manual entry - define the category in 'Category entry'
|
||||
\item No category - digitize geometry without category
|
||||
\end{compactitem}
|
||||
\item Category - a number (ID) attached to digitized feature
|
||||
\item Field - feature (attribute table) identification
|
||||
\end{compactitem}
|
||||
\subsection{Settings Tab} \index{GRASS!snapping tolerance}
|
||||
This tab allow you to set the snapping in screen pixels. This is the threshold in pixels in which new points or line ends are snapped to existing nodes. This helps prevent gaps or dangles between boundaries
|
||||
|
||||
\subsection{Symbology Tab}\index{GRASS!symbology settings}
|
||||
This tab allows you to view and set symbology for various geometry types and their topological status (e.g. closed / opened boundary).
|
||||
|
||||
\subsection{Table} \index{GRASS!table editing}
|
||||
This tab provides the means to view, create, or modify the database table for a given field.
|
||||
\begin{Tip}\caption{\textsc{GRASS Edit Permissions}}\index{GRASS!edit permissions}
|
||||
\qgistip{You must be the owner of the GRASS mapset you want to edit. It is impossible to edit vectors in mapsets which are not yours, even if you have write permissions.
|
||||
}
|
||||
\end{Tip}
|
||||
|
||||
\subsection{Region Tool}\index{GRASS!region}
|
||||
|
||||
The current region (window) in GRASS is very important for all
|
||||
raster modules. All new created rasters have the extension and resolution
|
||||
of the current region, regardless their original region.
|
||||
The region is stored in \$LOCATION/\$MAPSET/WIND file, and it defines
|
||||
north, south, east, west, number of columns, number of rows,
|
||||
horizontal and vertical resolution.
|
||||
|
||||
It is possible to switch on/off the grass region in QGIS canvas
|
||||
using the \textsl{Display Current GRASS Region}
|
||||
button. \index{GRASS!region!display}
|
||||
|
||||
With the \textsl{Edit Current GRASS Region} you can open a tool
|
||||
in which you can change the current region and symbology
|
||||
of the rectangle on the QGIS Canvas. When the tool is running,
|
||||
it is also possible to select a new region interactively
|
||||
on the QGIS canvas.\index{GRASS!region!editing}
|
||||
|
||||
Both tools are available only if QGIS was started from a GRASS
|
||||
shell or if the GISRC enviroment variable pointing to a
|
||||
valid GISRC file was set (i.e. only if you are running
|
||||
GRASS within your mapset).
|
||||
|
||||
%\section{The GRASS Toolbar}
|
||||
%The GRASS toolbar is displayed when the GRASS plugin is loaded using the Plugin Manager (see Section \ref{sec:managing_plugins}, \textsl{Managing Plugins}). Figure shows the toolbar with each function annotated.
|
18
doc/source/user_guide/help_and_support.tex
Normal file
@ -0,0 +1,18 @@
|
||||
\chapter{Help and Support}
|
||||
|
||||
QGIS is still under active development and as such it won't always work like you expect it to.
|
||||
The preferred way to get help is by joining the qgis-users mailing list Your questions will reach abroader audience and answers will benefit others. You can subscribe to the qgis-users mailing list by visiting here: http://lists.sourceforge.net/lists/listinfo/qgis-user
|
||||
|
||||
If you are a developer facing problems of a more technical nature, you may want to join the qgis-developer mailing list here: http://lists.sourceforge.net/lists/listinfo/qgis-developer
|
||||
|
||||
We also maintain a presence on IRC - visit us by joining the \#qgis channel on irc.freenode.net. Please wait around for a response to your question as many folks on the channel are doing other things andit may take a while for them to notice your question.
|
||||
Commercial support for QGIS is available from Micro Resources
|
||||
|
||||
While the qgis-users mailing list is useful for general 'how do I do xyz in QGIS' type questions, you may wish to notify us about bugs in QGIS. You can submit bug reports using the QGIS bug tracker. When reporting a bug, either login to SourceForge or, if you don't have a SourceForge id, provide an email address where we can request additional information.
|
||||
Feature requests can be submitted using the feature tracker. Please bear in mind that your bug may not always enjoy the priority you might hope for (depending on its severity). Some bugs may require may require significant developer effort to remedy and the manpower is not always available for this.
|
||||
|
||||
If you have found a bug and fixed it yourself you can submit it to the QGIS Sourceforge patch queue where someone will review it and apply it to QGIS. Please dont be alarmed if your patch is not applied straight away - developers may be tied up with other committments.
|
||||
|
||||
There is also a community site for QGIS where we encourage QGIS users to share their experiences and provide case studies about how they are using QGIS. The community site is available at: http://community.qgis.org
|
||||
|
||||
Lastly, we maintain a WIKI web site at http://wiki.qgis.org where you can find a variety of useful information relating to QGIS development, release plans, links to download sites and so on.
|
68
doc/source/user_guide/introduction.tex
Normal file
@ -0,0 +1,68 @@
|
||||
\chapter{Introduction}
|
||||
|
||||
Welcome to the wonderful world of Geographical Information Systems (GIS)! Quantum GIS (QGIS) is an Open Source Geographic Information System. The project was born in May of 2002 and was established as a project on SourceForge in June of the same year. We've worked hard to make GIS software (which is traditionaly expensive commerical software) a viable prospect for anyone with basic access to a Personal Computer. QGIS currently runs on most Unix platforms, Window, and OS X. QGIS is developed using the Qt toolkit (\url{http://www.trolltech.com}) and C++. This means that QGIS feels snappy to use and has a pleasing, easy to use graphical user interface.
|
||||
|
||||
QGIS aims to be an easy to use GIS, providing common functions and features. The initial goal was to provide a GIS data viewer. QGIS has reached that point in its evolution and is being used by many for their daily GIS data viewing needs. QGIS supports a number of raster and vector data formats, with new support easily added using the plugin architecture (see Appendix \ref{appdx_data_formats} for a full list of currenly supported data formats). QGIS is released under the GNU Public License (GPL). Devloping QGIS under this license means that you can (if you want to) inspect and modify the source code and guarantees that you, our happy user will always have access to a GIS program that is free of cost and can be freely modified. You should have received a full copy of the license with your copy of QGIS, and is also available as Appendix \ref{gpl_appendix}.
|
||||
\begin{quote}
|
||||
\begin{center}
|
||||
\textbf{Note:} The latest version of this document can always be found at \newline
|
||||
http://qgis.sourceforge.net/docs/userguide.html
|
||||
\end{center}
|
||||
\end{quote}
|
||||
|
||||
\section{Major Features}
|
||||
|
||||
QGIS has many common GIS features and functions. The major features
|
||||
are listed below.
|
||||
|
||||
\begin{compactenum}
|
||||
\item Support for spatially enabled PostgreSQL tables using PostGIS
|
||||
\item Support for ESRI shapefiles and other vector formats support by the
|
||||
OGR library, including MapInfo files
|
||||
\item Identify features
|
||||
\item Display attribute table
|
||||
\item Select features
|
||||
\item Label features
|
||||
\item Persistent selections
|
||||
\item Save and restore projects
|
||||
\item Support for raster formats supported by the GDAL library
|
||||
\item Change vector symbology (single, graduated, unique value, and continuous)
|
||||
\item SVG markers symbology (single, unique value, and graduated)
|
||||
\item Display raster data such as digital elevation models, aerial photography
|
||||
or landsat imagery
|
||||
\item Change raster symbology (grayscale, pseudocolor and multiband RGB)
|
||||
\item Export to Mapserver map file
|
||||
\item Preliminary digitizing support
|
||||
\item Map overview
|
||||
\item Plugins
|
||||
\end{compactenum}
|
||||
|
||||
|
||||
\section{Whats New in 0.6}
|
||||
QGIS is still under development. In this release many new features have become available including:
|
||||
\begin{compactenum}
|
||||
\item GEOS support in the OGR provider to refine selection of features via identify. This improves over the previous method of feature selection which used a simple MBR intersection check.
|
||||
\item PostGIS editing support in provider
|
||||
\item Vector dialog redesign to improve usability
|
||||
\item Improvement in project handling (loading and saving)
|
||||
\item Scale dependent rendering
|
||||
\item User option to load layers with out drawing them, thus allowing you to set scale dependency, etc without waiting for the initial draw to complete
|
||||
\item Interrupt drawing of features by hitting ESC
|
||||
\item Attribute actions - the ability to run an external program based on the contents of an attribute field in a layer
|
||||
\item Create new vector layer (shapefile) for editing
|
||||
\item Windows installer
|
||||
Mac OSX binary
|
||||
\item New options in the graticule builder plugin
|
||||
\item Enhancements to the GPS plugin
|
||||
\item Man page
|
||||
\item Save delimited text as shapefile
|
||||
\item Improved Delimited Text plugin, including preview of text file
|
||||
\item Improved SPIT handling of PostgreSQL reserved words and shapefiles with multiple geometry types
|
||||
\item Display SQL query used to create a PostGIS layer
|
||||
\item PostgreSQL query builder
|
||||
\item Ability to redefine the query used for PostgreSQL layers from the layer properties dialog
|
||||
\item North arrow, scalebar, and copyright plugins save their state in the project file
|
||||
\item Datasets with UTF8, Kanjii and CJK filenames now load properly
|
||||
|
||||
\end{compactenum}
|
||||
|
70
doc/source/user_guide/plugins.tex
Normal file
@ -0,0 +1,70 @@
|
||||
\chapter{Using Plugins}\index{plugins}
|
||||
\section{An Introduction to Using Plugins}
|
||||
QGIS has been designed with a plugin architecture. This allows new features/functions to be added to the application. Many of the features in QGIS are actually implemented as plugins.
|
||||
|
||||
There are two types of plugins in QGIS: core and user-contributed.
|
||||
\index{plugins!types}A core plugin is maintained by the QGIS development team and is part of every QGIS distribtution. A user-contributed plugin is an external plugin that is maintained by the individual author. The QGIS Community site (\url{http://community.qgis.org}) serves as the repository for user contributed plugins.
|
||||
|
||||
\subsection{Finding and Installing a Plugin}
|
||||
When you install QGIS, all of the core plugins are included (these are described
|
||||
below). \index{plugins!installing}Additional user-contributed plugins may be
|
||||
available on the QGIS Community site. To see what user-contributed plugins are
|
||||
available, see the plugins page on the Community site
|
||||
(\url{http://community.qgis.org/plugins}).\index{plugins!user contributed}
|
||||
|
||||
Typically user-contributed plugins are distributed in source form and require compiling. For instructions on building and installing a user-contributed plugin, see the documentation included with the plugin.
|
||||
\subsection{Managing Plugins}\label{sec:managing_plugins}\index{plugins!managing}
|
||||
Managing plugins consists of loading or unloading them from QGIS. Loaded plugins are "remembered" when you exit the application and restored the next time you run QGIS.
|
||||
|
||||
To manage plugins, open the \textsl{Plugin Manager} from the \textsl{Tools}
|
||||
menu. \index{plugins!manager}The Plugin Manager displays all the available plugins and their status (loaded or unloaded). Figure \ref{fig:pluginmanager} shows the Plugin Manager dialog.
|
||||
|
||||
\begin{figure}[h]
|
||||
\begin{center}
|
||||
\caption{Plugin Manager}\label{fig:pluginmanager}\smallskip
|
||||
\includegraphics{qgis_user_guide_images/pluginmanager_80pct}
|
||||
\end{center}
|
||||
\end{figure}
|
||||
Typically all QGIS plugins are installed in the same location. This location is shown in the Plugin Directory text field. You can tell QGIS to load plugins from another location by specifying a different directory.
|
||||
\begin{Tip}\caption{\textsc{Crashing Plugins}}\index{crashes}
|
||||
\qgistip{If you find that QGIS crashes on startup, a plugin may be at fault. You can stop all plugins from loading by editing your .qt/qgisrc file in your home directory on Linux/Unix (Windows users will have to edit the registry). On Linux/Unix, open the qgisrc file in a text editor and find the [Plugins] section. Set all the plugin values to false to prevent them from loading. For example, to prevent the Delimited text plugin from loading, the entry in qgisrc should look like this:\ttfamily{
|
||||
Add Delimited Text Layer=false}.\normalfont Do this for each plugin in the [Plugins] section. You can then start QGIS and add the plugins one at a time from the Plugin Manger to determine which is causing the problem.
|
||||
|
||||
}
|
||||
\end{Tip}
|
||||
|
||||
\subsection{Data Providers}\index{data providers}
|
||||
Data Providers are "special" plugins that provides access to a data store. By default, QGIS supports PostGIS layers and disk-based data stores supported by the OGR library (Appendix \ref{appdx_ogr}). A Data Provider plugin extends the ability of QGIS to use other data sources.
|
||||
|
||||
Data Provider plugins are registered automatically by QGIS at startup. They are not managed by the Plugin Manager but are used behind the scenes when a corresponding data type is added as a layer in QGIS.
|
||||
\subsection{Core Plugins}\index{plugins!core}
|
||||
QGIS currently contains 9 core plugins that can be loaded using the Plugin Manager. Table \ref{tab:core_plugins} lists each of the core plugins along with a description of their purpose. Figure \ref{fig:plugintoolbar} shows the icon for each plugin in the Plugin toolbar (the number corresponds to the Item in Table \ref{tab:core_plugins}. Note the GRASS plugin is not included below because it installs its own toolbar (see Section \ref{sec:grass} for a discussion of available features in GRASS plugin).
|
||||
\begin{table}[h]
|
||||
\centering
|
||||
\caption{QGIS Core Plugins}\label{tab:core_plugins}\medskip
|
||||
\small
|
||||
\begin{tabular}{|l|l|p{4in}|}
|
||||
\hline \textbf{Item} & \textbf{Plugin} & \textbf{Description} \\
|
||||
\hline 1 & Copyright Label \index{plugins!copyright}& Display a copyright label on the map canvas\\
|
||||
\hline 2 & Delimited Text \index{plugins!delimited text}& Load a delimited text file containing x,y coordinates as a point layer \\
|
||||
\hline 3 & GPS Tools \index{plugins!gps}& Load and display GPS data \\
|
||||
\hline 4 & Graticule Creator \index{plugins!graticule}& Create a latitude/longitude grid and save as a shapefile\\
|
||||
\hline 5 & Scalebar \index{plugins!scalebar}& Add a scalebar to the map canvas\\
|
||||
\hline 6 & North Arrow \index{plugins!north arrow}& Add a north arrow to the map canvas\\
|
||||
\hline 7 & PostgreSQL Geoprocessing \index{plugins!geoprocessing}& Buffer a PostGIS layer \\
|
||||
\hline 8 & SPIT \index{plugins!SPIT}& Shapefile to PostGIS Import Tool - import shapefiles into PostgreSQL\\
|
||||
\hline
|
||||
\end{tabular}
|
||||
\end{table}
|
||||
\normalsize
|
||||
\begin{figure}[h]
|
||||
\begin{center}
|
||||
\caption{Plugin Toolbar and Icons}\label{fig:plugintoolbar}\smallskip
|
||||
\includegraphics[scale=1.0]{qgis_user_guide_images/plugintoolbar}
|
||||
\end{center}
|
||||
\end{figure}
|
||||
|
||||
\begin{Tip}\caption{\textsc{Plugins Settings Saved to Project}}\index{plugins settings}
|
||||
\qgistip{When you save a .qgs project, any changes you have made to NorthArrow, ScaleBar and Copyright plugins will be saved in the project and restored next time you load it.
|
||||
}
|
||||
\end{Tip}
|
113
doc/source/user_guide/plugins_delimited_text.tex
Normal file
@ -0,0 +1,113 @@
|
||||
% html: Beginning of file: `index.html'
|
||||
|
||||
\section{Using the Delmited Text Plugin}
|
||||
\label{f0}
|
||||
|
||||
The Delimited Text plugin allows you to load a delimited text file as a layer in QGIS.
|
||||
|
||||
\subsection{Requirements}
|
||||
To view a delimited text file as layer, the text file must contain:
|
||||
\begin{enumerate}
|
||||
\item A delimited header row of field names. This must be the first line in the text file \item The header row must contain an X and Y field. These fields can have any name.
|
||||
\item The x and y coordinates must be specified as a number. The coordinate system is not important
|
||||
\end{enumerate}
|
||||
An example of a valid text file might look like this:
|
||||
\begin{verbatim}
|
||||
name|latdec|longdec|cell|
|
||||
196 mile creek|61.89806|-150.0775|tyonek d-1 ne|
|
||||
197 1/2 mile creek|61.89472|-150.09972|tyonek d-1 ne|
|
||||
a b mountain|59.52889|-135.28333|skagway c-1 sw|
|
||||
apw dam number 2|60.53|-145.75167|cordova c-5 sw|
|
||||
apw reservoir|60.53167|-145.75333|cordova c-5 sw|
|
||||
apw reservoir|60.53|-145.75167|cordova c-5 sw|
|
||||
aaron creek|56.37861|-131.96556|bradfield canal b-6|
|
||||
aaron island|58.43778|-134.81944|juneau b-3 ne|
|
||||
aats bay|55.905|-134.24639|craig d-7|
|
||||
\end{verbatim}
|
||||
|
||||
|
||||
Some items of note about the text file are:
|
||||
|
||||
\begin{enumerate}
|
||||
\item The example text file uses \mbox{$|$} as delimter. Any character can be used to delimit the fields.
|
||||
\item The first row is the header row. It contains the fields name, latdec, longdec, and cell
|
||||
\item No quotes ({\tt{}"{}}) are used to delimit text fields
|
||||
\item The x coordinates are contained in the {\em longdec} field
|
||||
\item The y coordinates are contained in the {\em latdec} field
|
||||
\end{enumerate}
|
||||
|
||||
|
||||
\subsection{Using the Plugin}
|
||||
To use the plugin you must have QGIS running and use the Plugin Manager to load the plugin:
|
||||
|
||||
Start QGIS, then Open the Plugin Manager by choosing the {\em Tools\mbox{$|$}Plugin Manager} menu. The Plugin Manager displays a list of available plugins. Plugins that are already loaded have a checkmark to the left of their name. Click on the checkbox to the left of the {\em Add Delimited Text Layer} plugin and click Ok to load it as shown in Figure \ref{fig:plugin_manager}.
|
||||
|
||||
\begin{figure}[h]
|
||||
\begin{center}
|
||||
\caption{Plugin Manager Dialog}
|
||||
\label{fig:plugin_manager}
|
||||
\smallskip
|
||||
\includegraphics[scale=0.6]{qgis_user_guide_images/plugins_delimited_text/plugin_manager}
|
||||
\end{center}
|
||||
\end{figure}
|
||||
|
||||
|
||||
A new toolbar icon is now present:
|
||||
\includegraphics[scale=0.8]{qgis_user_guide_images/plugins_delimited_text/toolbar_icon}
|
||||
Click on the icon to open the Delimited Text dialog as shown in Figure \ref{fig:delim_text_plugin_dialog}.
|
||||
|
||||
\begin{figure}[h]
|
||||
\begin{center}
|
||||
\caption{Delimited Text Dialog}\label{fig:delim_text_plugin_dialog}\smallskip
|
||||
\includegraphics[scale=0.6]{qgis_user_guide_images/plugins_delimited_text/dialog}
|
||||
\end{center}
|
||||
\end{figure}
|
||||
|
||||
|
||||
First select the file to import by clicking on the ellipsis button:
|
||||
\includegraphics[scale=0.5]{qgis_user_guide_images/plugins_delimited_text/ellipsis}
|
||||
Select the desired text file from the file dialog
|
||||
Once the file is selected, the plugin attempts to parse the file using the last
|
||||
used delimiter, in this case \mbox{$|$} (Figure
|
||||
\ref{fig:delim_text_file_selected}).
|
||||
\begin{figure}[h]
|
||||
\begin{center}
|
||||
\caption{File Selected}\label{fig:delim_text_file_selected}\smallskip
|
||||
\includegraphics[scale=0.6]{qgis_user_guide_images/plugins_delimited_text/file_selected}
|
||||
\end{center}
|
||||
\end{figure}
|
||||
|
||||
In this case the delimiter \mbox{$|$} is not correct for the file. The file is actually tab delimited. Note that the X and Y field drop down boxes do not contain valid field names.
|
||||
To properly parse the file, change the delimiter to tab using
|
||||
\mbox{$\backslash$}t (this is a regular expression for the tab character). After
|
||||
changing the delimiter, click {\em Parse}.
|
||||
The drop down boxes now contain the fields properly parsed as shown in Figure
|
||||
\ref{fig:delim_text_file_selected2}.
|
||||
|
||||
Choose the X and Y fields from the drop down boxes and enter a Layer name as
|
||||
shown in Figure \ref{fig:delim_text_file_selected3}. To add the layer to the
|
||||
map, click {\em Add Layer}. The delimited text file now behaves as any other map
|
||||
layer in QGIS (Figure \ref{fig:layer_added}).
|
||||
\begin{figure}[h]
|
||||
\begin{center}
|
||||
\caption{Fields Parsed from Text File}\label{fig:delim_text_file_selected2}\smallskip
|
||||
\includegraphics[scale=0.6]{qgis_user_guide_images/plugins_delimited_text/file_selected2}
|
||||
\end{center}
|
||||
\end{figure}
|
||||
|
||||
\begin{figure}[h]
|
||||
\begin{center}
|
||||
\caption{Selecting the X and Y Fields}\label{fig:delim_text_file_selected3}\smallskip
|
||||
\includegraphics[scale=0.6]{qgis_user_guide_images/plugins_delimited_text/file_selected3}
|
||||
\end{center}
|
||||
\end{figure}
|
||||
\begin{figure}[h]
|
||||
\begin{center}
|
||||
\caption{Delimited Text Layer Added to QGIS}\label{fig:layer_added}\smallskip
|
||||
\includegraphics[scale=0.6]{qgis_user_guide_images/plugins_delimited_text/layer_added}
|
||||
\end{center}
|
||||
\end{figure}
|
||||
|
||||
|
||||
|
||||
% html: End of file: `index.html'
|
177
doc/source/user_guide/plugins_gps.tex
Normal file
@ -0,0 +1,177 @@
|
||||
\section{Using the GPS Plugin}
|
||||
|
||||
|
||||
\subsection{What is GPS?}
|
||||
|
||||
GPS, the Global Positioning System, is a satellite-based system that
|
||||
allows anyone with a GPS receiver to find their exact position anywhere
|
||||
in the world. It is used as an aid in navigation, for example in airplanes,
|
||||
in boats, and by hikers. The GPS receiver uses the signals from the
|
||||
satellites to calculate its latitude, longitude and (sometimes) elevation.
|
||||
Most receivers also have the capability to store locations (known
|
||||
as \emph{waypoints}), sequences of locations that make up a planned
|
||||
\emph{route}, and a tracklog or \emph{track} of the receivers movement
|
||||
over time. Waypoints, routes, and tracks are the three basic feature
|
||||
types in GPS data. QGIS displays waypoints in point layers while routes
|
||||
and tracks are displayed in linestring layers.
|
||||
|
||||
|
||||
\subsection{Loading GPS data from a file}
|
||||
|
||||
There are dozens of different file formats for storing GPS data. The
|
||||
format that QGIS uses is called GPX (GPS eXchange format), which is
|
||||
a standard interchange format that can contain any number of waypoints,
|
||||
routes, and tracks in the same file.
|
||||
|
||||
\includegraphics{qgis_user_guide_images/plugins_gps/icon}To load a GPX file you need to use the \emph{GPS Tools} plugin. When
|
||||
this plugin is loaded a button with a small handheld GPS device will
|
||||
show up in the toolbar (the device looks a bit like a mobile phone).
|
||||
Clicking on this button will open the \emph{GPS Tools} dialog (see
|
||||
figure \ref{figure GPX loader}).
|
||||
|
||||
%
|
||||
\begin{figure}
|
||||
|
||||
\caption{\label{figure GPX loader}The \emph{GPS Tools} dialog window}
|
||||
|
||||
\includegraphics[%
|
||||
scale=0.5]{qgis_user_guide_images/plugins_gps/loadgpx}
|
||||
\end{figure}
|
||||
|
||||
|
||||
Use the browse button {[}...{]} to select the GPX file, then use the
|
||||
checkboxes to select the feature types you want to load from that
|
||||
GPX file. Each feature type will be loaded in a separate layer when
|
||||
you click OK.
|
||||
|
||||
|
||||
\subsection{GPSBabel}
|
||||
|
||||
Since QGIS uses GPX files you need a way to convert other GPS file
|
||||
formats to GPX. This can be done for many formats using the free program
|
||||
GPSBabel, which is available at \url{http://www.gpsbabel.org}. This
|
||||
program can also transfer GPS data between your computer and a GPS
|
||||
device. QGIS uses GPSBabel to do these things, so it is recommended
|
||||
that you install it. However, if you just want to load GPS data from
|
||||
GPX files you will not need it. Version 1.2.3 of GPSBabel is known
|
||||
to work with QGIS, but you should be able to use later versions without
|
||||
any problems.
|
||||
|
||||
|
||||
\subsection{Importing GPS data}
|
||||
|
||||
To import GPS data from a file that is not a GPX file, you use the
|
||||
tool \emph{Import other file} in the \emph{GPS Tools} dialog. Here
|
||||
you select the file that you want to import, which featuretype you
|
||||
want to import from it, where you want to store the converted GPX
|
||||
file, and what the name of the new layer should be.
|
||||
|
||||
When you select the file to import you must also select the format
|
||||
of that file by using the menu in the file selection dialog (see figure
|
||||
\ref{figure importdialog}). All formats do not support all three
|
||||
feature types, so for many formats you will only be able to choose
|
||||
between one or two types.
|
||||
|
||||
%
|
||||
\begin{figure}
|
||||
|
||||
\caption{\label{figure importdialog}File selection dialog for the import
|
||||
tool}
|
||||
|
||||
\includegraphics{qgis_user_guide_images/plugins_gps/importdialog}
|
||||
\end{figure}
|
||||
|
||||
|
||||
|
||||
\subsection{Downloading GPS data from a device}
|
||||
|
||||
QGIS can use GPSBabel to download data from a GPS device directly
|
||||
into vector layers. For this you use the tool \emph{Download from
|
||||
GPS} (see Figure \ref{figure_download}), where you select your type
|
||||
of GPS device, the port that it is connected to, the feature type
|
||||
that you want to download, the GPX file where the data should be stored,
|
||||
and the name of the new layer.
|
||||
|
||||
%
|
||||
\begin{figure}
|
||||
|
||||
\caption{\label{figure_download}The download tool}
|
||||
|
||||
\includegraphics[%
|
||||
scale=0.5]{qgis_user_guide_images/plugins_gps/download}
|
||||
\end{figure}
|
||||
|
||||
|
||||
The device type you select in the GPS device menu determines how GPSBabel
|
||||
tries to communicate with the device. If none of the device types
|
||||
works with your GPS device you can create a new type (see section
|
||||
\ref{sec:Defining-new-device}).
|
||||
|
||||
The port is a filename or some other name that your operating system
|
||||
uses as a reference to the physical port in your computer that the
|
||||
GPS device is connected to. On Linux this is something like /dev/ttyS0
|
||||
or /dev/ttyS1 and on Windows it's COM1 or COM2.
|
||||
|
||||
When you click OK the data will be downloaded from the device and
|
||||
appear as a layer in QGIS.
|
||||
|
||||
|
||||
\subsection{Uploading GPS data to a device}
|
||||
|
||||
You can also upload data directly from a vector layer in QGIS to a
|
||||
GPS device, using the tool \emph{Upload to GPS}. The layer must be
|
||||
a GPX layer. To do this you simply select the layer that you want
|
||||
to upload, the type of your GPS device, and the port that it's connected
|
||||
to. Just as with the download tool you can specify new device types
|
||||
if your device isn't in the list.
|
||||
|
||||
This tool is very useful together with the vector editing capabilities
|
||||
of QGIS. You can load a map, create some waypoints and routes, and
|
||||
then upload them and use them in your GPS device.
|
||||
|
||||
|
||||
\subsection{\label{sec:Defining-new-device}Defining new device types}
|
||||
|
||||
There are lots of different types of GPS devices. The QGIS developers
|
||||
can't test all of them, so if you have one that does not work with
|
||||
any of the device types listed in the download and upload tools you
|
||||
can define your own device type for it. You do this by using the \emph{GPS
|
||||
device editor}, which you start by clicking the \emph{Edit devices}
|
||||
button in the download or the upload window.
|
||||
|
||||
To define a new device you simply click the \emph{New device} button,
|
||||
enter a name, a download command, and an upload command for your device,
|
||||
and click the \emph{Update device} button.
|
||||
|
||||
The name will be listed in the device menus in the upload and download
|
||||
windows, and can be any string.
|
||||
|
||||
The download command is the command that is used to download data
|
||||
from the device to a GPX file. This will probably be a GPSBabel command,
|
||||
but you can use any other command line program that can create a GPX
|
||||
file. QGIS will replace the keywords \emph{\%type}, \emph{\%in}, and
|
||||
\emph{\%out} when it runs the command.
|
||||
|
||||
\emph{\%type} will be replaced by {}``-w'' if you are downloading
|
||||
waypoints, {}``-r'' if you are downloading routes, and {}``-t''
|
||||
if you are downloading tracks. These are command line options that
|
||||
tell GPSBabel which feature type to download.
|
||||
|
||||
\emph{\%in} will be replaced by the port name that you choose in the
|
||||
download window, and \emph{\%out} will be replaced by the name you
|
||||
choose for the GPX file that the downloaded data should be stored
|
||||
in. So if you create a device type with the download command {}``gpsbabel
|
||||
\%type -i garmin -o gpx \%in \%out'' (this is actually the download
|
||||
command for the predefined device type {}``Garmin serial'') and
|
||||
then use it to download waypoints from port {}``/dev/ttyS0'' to
|
||||
the file {}``output.gpx'', QGIS will replace the keywords and run
|
||||
the command {}``gpsbabel -w -i garmin -o gpx /dev/ttyS0 output.gpx''.
|
||||
|
||||
The upload command is the command that is used to upload data to the
|
||||
device. The same keywords are used, but \emph{\%in} is now replaced
|
||||
by the name of the GPX file for the layer that is being uploaded,
|
||||
and \emph{\%out} is replaced by the port name. You can learn more
|
||||
about GPSBabel and it's available command line options at \url{http://www.gpsbabel.org}
|
||||
|
||||
Once you have created a new device type it will appear in the device
|
||||
lists for the download and upload tools.
|
@ -1,4 +1,4 @@
|
||||
\documentclass[10pt,english]{article}
|
||||
\documentclass[10pt,english]{timthesis}
|
||||
|
||||
\usepackage{geometry}
|
||||
\geometry{verbose,letterpaper,tmargin=1in,bmargin=1in,lmargin=1in,rmargin=
|
||||
@ -16,6 +16,8 @@
|
||||
\usepackage{picins}
|
||||
\usepackage{fancyhdr}
|
||||
\usepackage{extramarks}
|
||||
\usepackage{makeidx}
|
||||
\usepackage{datetime}
|
||||
\pagestyle{empty}
|
||||
%define tip float
|
||||
\usepackage{float}
|
||||
@ -27,14 +29,24 @@
|
||||
\renewcommand{\textfraction}{0.1}
|
||||
\renewcommand{\floatpagefraction}{0.75}
|
||||
|
||||
|
||||
|
||||
|
||||
\makeindex
|
||||
%Added by Tim to define a month year date style
|
||||
\newdateformat{mydate}{\monthname[\THEMONTH] \THEYEAR}
|
||||
%\renewcommand\familydefault{lucidabrightsans}
|
||||
\title{Quantum GIS User Guide\\
|
||||
\large Version 0.5 \textsl{'Bandit'}}
|
||||
\author{Gary E. Sherman \\Tim Sutton (Rasters) \\Radim Blazek (GRASS)}
|
||||
%\date{\small July 2004}
|
||||
\title{
|
||||
\includegraphics[scale=0.4]{qgis_user_guide_images/qgis_icon_new_verylarge}\\
|
||||
Quantum GIS User Guide\\
|
||||
\large Version 0.6 \textsl{'Simon'}}
|
||||
\author{Gary E. Sherman \\Tim Sutton \\Radim Blazek (GRASS) \\ Lars Luthman (GPS Plugin)\\
|
||||
\date{\mydate\today}
|
||||
}
|
||||
|
||||
|
||||
\begin{document}
|
||||
|
||||
\pagenumbering{roman}
|
||||
|
||||
% To disable first line indents of paragraphs after the first one
|
||||
\setlength{\parindent}{0in}
|
||||
@ -43,691 +55,53 @@
|
||||
\maketitle
|
||||
\tableofcontents
|
||||
\listof{Tip}{QGIS Tips}
|
||||
\newpage
|
||||
%\newpage
|
||||
|
||||
%added by Tim to create a decent space between paragraphs
|
||||
%note its only after toc so toc remains compact
|
||||
\setlength{\parskip}{8pt plus 1pt minus 1pt}
|
||||
%\fancyfoot[C]{\thepage}
|
||||
\pagestyle{fancy}
|
||||
\fancyhead[L]{QGIS User Guide}
|
||||
\fancyhead[R]{\textsl{Version 0.5}}
|
||||
|
||||
\fancyhead[R]{\textsl{Version 0.6}}
|
||||
|
||||
\pagenumbering{arabic}
|
||||
\begin{onehalfspace}
|
||||
\reversemarginpar
|
||||
\section{Introduction}
|
||||
Quantum GIS (QGIS) is designed to be a Geographic Information System
|
||||
(GIS) built for Linux/Unix, Mac OSX, and Windows. QGIS currently offers basic support for
|
||||
vector (both disk-based and database) and raster formats.
|
||||
\input{introduction.tex}
|
||||
\input{getting_started.tex}
|
||||
\input{working_with_vector.tex}
|
||||
\input{working_with_raster.tex}
|
||||
\input{grass_integration.tex}
|
||||
%first the general intro to plugins
|
||||
%then each individual plugin can have a section
|
||||
%in the plugins chapter
|
||||
\input{plugins.tex}
|
||||
\input{plugins_gps.tex}
|
||||
\input{plugins_delimited_text.tex}
|
||||
%end of plugin docs
|
||||
\input{help_and_support.tex}
|
||||
|
||||
QGIS is released under the GNU Public License. You should have received a full copy of the license with your copy of QGIS.
|
||||
\begin{quote}
|
||||
\begin{singlespace}
|
||||
\textsl{Note - The latest version of this document can always be found at\\
|
||||
http://qgis.sourceforge.net/docs/userguide.html }
|
||||
\end{singlespace}
|
||||
\end{quote}
|
||||
\section{Whats New in 0.5}
|
||||
New features in version 0.5 include:
|
||||
\begin{compactenum}
|
||||
\item Windows version
|
||||
\item Feature labeling with optional buffering
|
||||
\item Preliminary digitizing support for shapefiles
|
||||
\item GRASS digitizing support
|
||||
\item GPS SVG icons
|
||||
\item Unique value renderers
|
||||
\item User interface improvements
|
||||
\item Specify a query when loading a PostGIS layer
|
||||
\item Italian translation
|
||||
|
||||
\end{compactenum}
|
||||
\section{Major Features}
|
||||
|
||||
QGIS has many common GIS features and functions. The major features
|
||||
are listed below.
|
||||
|
||||
\begin{compactenum}
|
||||
\item Support for spatially enabled PostgreSQL tables using PostGIS
|
||||
\item Support for ESRI shapefiles and other vector formats support by the
|
||||
OGR library, including MapInfo files
|
||||
\item Identify features
|
||||
\item Display attribute table
|
||||
\item Select features
|
||||
\item Label features
|
||||
\item Persistent selections
|
||||
\item Save and restore projects
|
||||
\item Support for raster formats supported by the GDAL library
|
||||
\item Change vector symbology (single, graduated, unique value, and continuous)
|
||||
\item SVG markers symbology (single, unique value, and graduated)
|
||||
\item Display raster data such as digital elevation models, aerial photography
|
||||
or landsat imagery
|
||||
\item Change raster symbology (grayscale, pseudocolor and multiband RGB)
|
||||
\item Export to Mapserver map file
|
||||
\item Preliminary digitizing support
|
||||
\item Map overview
|
||||
\item Plugins
|
||||
\end{compactenum}
|
||||
|
||||
\section{Getting Started}
|
||||
|
||||
This section gives you a quick overview of running QGIS and examining
|
||||
data available on the QGIS web page.
|
||||
|
||||
|
||||
\subsection{Installation}
|
||||
|
||||
Installation of QGIS is documented in the Installation Guide. The Installation Guide is distributed with the QGIS source code and is also available at \url{http://qgis.org}.
|
||||
|
||||
|
||||
\subsection{Sample Data}
|
||||
|
||||
If you do not have any GIS data handy, you can obtain a dataset for Alaska from the QGIS web site at \url{http://qgis.org}. The Alaska data set will be used as the basis for the examples and screenshots provided in this document.
|
||||
|
||||
|
||||
\subsection{Starting QGIS}
|
||||
|
||||
Assuming that QGIS is installed in the PATH, you can start QGIS by
|
||||
typing: \textbf{qgis} at a command prompt or by double clicking on the QGIS application link (or shortcut) on the desktop.
|
||||
%\begin{figure}
|
||||
%\caption{QGIS Main Window}
|
||||
%\end{figure}
|
||||
\begin{Tip} \caption{\textsc{Using command line arguments}}
|
||||
\qgistip{
|
||||
You can also start QGIS by specifying one or more datafiles
|
||||
on the command line. For example, assuming you are in your data directory,
|
||||
you could start QGIS with two shapefiles and a raster file set to
|
||||
load on startup using the following command:
|
||||
\ttfamily{ qgis ak\_shade.tif alaska.shp majrivers.shp}
|
||||
}
|
||||
\end{Tip}
|
||||
|
||||
\subsection{The QGIS Main Window}
|
||||
When QGIS starts, an empty window is displayed as shown below.
|
||||
|
||||
\begin{figure}[h]
|
||||
\begin{center}
|
||||
\caption{Main window}\label{fig:startup}
|
||||
\includegraphics[scale=.9]{qgis_user_guide_images/startup}
|
||||
\end{center}
|
||||
|
||||
\end{figure}
|
||||
\
|
||||
textsc{Note - Your window decorations (title bar, etc.) may appear different depending on your operating system and window manager}
|
||||
The QGIS main window is divided into five areas:
|
||||
\begin{compactenum}
|
||||
\item The menu bar
|
||||
\item The tool bar
|
||||
\item The map legend
|
||||
\item The map view
|
||||
\item The map overview
|
||||
\item The status bar
|
||||
\end{compactenum}
|
||||
|
||||
These six components of the QGIS interface are described in more detail in the following sections
|
||||
\subsubsection{The QGIS menu bar}
|
||||
|
||||
The menu bar provides access to various QGIS features using a standard windows
|
||||
heirachical menu. The top-level menus and a summary of some of the functions provided are:
|
||||
\begin{compactitem}
|
||||
\item File (project open, save, export image, properties)
|
||||
\item Layer (add, show, hide layers)
|
||||
\item View (zoom, refresh)
|
||||
\item Tools (plugin manager, preferences)
|
||||
\item Plugins (menus added by plugins as they are loaded)
|
||||
\item Help (documentation and web links)
|
||||
\end{compactitem}
|
||||
%See Appendix \ref{app_menu} for complete descriptions of the menu items.
|
||||
|
||||
\subsubsection{Toolbars}
|
||||
The toolbars provide access to most of the same functions as the menus, plus
|
||||
additional tools for interacting with the map. Each toolbar item has popup
|
||||
help available. Hold your mouse over the item and a short description of the
|
||||
tool's purpose will be displayed. %See Appendix \ref{app_toolbar} for complete
|
||||
%descriptions and illustrations of the various toolbars.
|
||||
|
||||
\subsubsection{The QGIS map legend}
|
||||
The map legend area is used to set the visibility and z-ordering of layers.
|
||||
Z-ordering means that layers listed nearer the top of the legend are drawn
|
||||
over layers listed lower down in the legend. The checkbox in each legend entry
|
||||
can be used to show/hide that layer.
|
||||
\begin{Tip} \caption{\textsc{Viewing the Layer Menu}}
|
||||
\qgistip{You can display the context menu for any layer in the legend by right-clicking
|
||||
on the layer name. The context menu contains items for working with the layer and viewing
|
||||
its properties.}
|
||||
\end{Tip}
|
||||
|
||||
\subsubsection{The QGIS map view}
|
||||
|
||||
This is the 'business end' of QGIS - maps are displayed in this area! The map
|
||||
displayed in this window will depend on the vector and raster layers you have
|
||||
chosen to load (see sections that follow for more info on this). The map view
|
||||
can be panned (shifting to focus of the map display to another region), zoomed
|
||||
in and out, and supports various other actions as described in the toolbar
|
||||
description above. The map view and the legend are tightly bound to each
|
||||
other - the maps in view reflect changes you make in the legend area.
|
||||
\begin{Tip}\caption{\textsc{Zooming the Map with the Mouse Wheel}}
|
||||
\qgistip{You can use the mouse wheel to zoom in and out on the map. Place the mouse cursor inside the map area and roll it forward (away from you) to zoom in and backwards (towards you) to zoom out.
|
||||
}
|
||||
\end{Tip}
|
||||
\subsubsection{The QGIS map overview}
|
||||
The map overview area provides a full extent view of layers added to it. Within the view is a rectangle showing the current map extent. This allows you to quickly determine which area of the map you are currently viewing.
|
||||
|
||||
\subsubsection{The QGIS map status bar}
|
||||
The status bar shows you your current position in map coordinate (e.g. meters
|
||||
or decimal degress) as the mouse pointer is moved accross the map view.
|
||||
|
||||
\section{Working with Vector Data}
|
||||
QGIS supports vector data in a number of formats, including shapefiles,
|
||||
MapInfo mif, and PostGIS layers in a PostgreSQL database. Support for
|
||||
additional data types is provided by plugins, for example delimited text.\\
|
||||
|
||||
This section describes how to work with two common formats: shapefiles and
|
||||
PostGIS layers. Many of the features available in QGIS work the same regardless of the
|
||||
vector data source. This is by design and includes the identify, select, labeling, and attributes functions.
|
||||
|
||||
\subsection{Shapefiles}
|
||||
Shapefile support is provided by a library of functions (OGR \url{http://www.remotesensing.org/gdal/ogr}). See Appendix \ref{appdx_ogr} for a list of supported formats.\\
|
||||
|
||||
A shapefile actually consists of a minimum of three files:
|
||||
\begin{compactenum}
|
||||
\item .shp file containing the feature geometries
|
||||
\item .dbf file containing the attributes in dBase format
|
||||
\item .shx index file
|
||||
\end{compactenum}
|
||||
The technical specification for the shapefile format can be found at\\ \url{http://www.esri.com/software/opengis/openpdf.html}.
|
||||
\subsubsection{Loading a Shapefile}
|
||||
\parpic[l]{\includegraphics{qgis_user_guide_images/addshapefile}}To load a shapefile, start QGIS and click on the \textit{Add a vector layer} toolbar bar button. This same tool can be used to load any of the formats supported by the OGR library.
|
||||
|
||||
Clicking on the tool brings up a standard open file dialog (Figure \ref{fig:openshapefile}) which allows you to navigate the file system and load a shapefile (or other supported data source).
|
||||
\begin{figure}[h]
|
||||
\begin{center}
|
||||
\caption{Open OGR Data Source Dialog}\label{fig:openshapefile}\smallskip
|
||||
\includegraphics[scale=.75]{qgis_user_guide_images/shapefileopendialog}
|
||||
\end{center}
|
||||
|
||||
\end{figure}
|
||||
Selecting a shapefile from the list and clicking Ok loads it into QGIS. Figure \ref{fig:loadedshapefile}
|
||||
shows QGIS after loading the alaska.shp file.
|
||||
\begin{figure}[h]
|
||||
\begin{center}
|
||||
\caption{QGIS with the Alaska Shapefile Loaded}\label{fig:loadedshapefile}\smallskip
|
||||
\includegraphics[scale=.6]{qgis_user_guide_images/shapefileloaded}
|
||||
\end{center}
|
||||
|
||||
\end{figure}
|
||||
\begin{Tip}\caption{\textsc{Layer Colors}}
|
||||
\qgistip{When you add a layer to the map, it is assigned a random color. When adding more than one layer at a time, different colors are assigned to each. }
|
||||
\end{Tip}
|
||||
|
||||
Once loaded, you can zoom around the shapefile using the map navigation tools. To change the symbology of a layer, open the layer properties dialog by double clicking on the layer name or by right-clicking on the name in the legend and choosing \textsl{Properties} from the popup menu. See Section \ref{sec:symbology} for more information on setting symbology of vector layers.
|
||||
\subsection{PostGIS Layers}
|
||||
PostGIS layers are stored in a PostgreSQL database. The advantage of PostGIS is the spatial indexing, filtering, and query capability. Using PostGIS, vector functions such as select and identify work more accurately than with OGR layers in QGIS.
|
||||
To use PostGIS layers you must:
|
||||
\begin{compactenum}
|
||||
\item Create a stored connection in QGIS to the PostgreSQL database (if one is not already defined)
|
||||
\item Connect to the database
|
||||
\item Select the layer to add to the map
|
||||
\item Optionally provide a SQL where clause to define which features to load from the layer
|
||||
\item Load the layer
|
||||
\end{compactenum}
|
||||
\subsubsection{Creating a Stored Connection}
|
||||
\parpic[l]{\includegraphics{qgis_user_guide_images/addpostgis}}The first time you use a PostGIS data source, you must create a connection to the PostgreSQL database that contains the data. Begin by clicking on the \textit{Add a PostGIS Layer} toolbar button. The \textsl{Add PostGIS Table(s)} dialog will be displayed. To access the connection manager, click on the \textsl{New} button to display the \textsl{Create a New PostGIS Connection} dialog. The parameters required for a connection are shown in Table \ref{tab:postgis_connection_parms}.
|
||||
\begin{table}[h]
|
||||
\centering
|
||||
\caption{PostGIS Connection Parameters}\label{tab:postgis_connection_parms}\medskip
|
||||
\begin{tabular}{|l|p{5in}|}
|
||||
\hline Name & A name for this connection. Can be the same as \textsl{Database} \\
|
||||
\hline Host & Name of the database host. This must be a resolvable host name the same as would be used to open a telnet connection or ping the host \\
|
||||
\hline Database & Name of the database \\
|
||||
\hline Port & Port number the PostgreSQL database server listens on. The default port is 5432.\\
|
||||
\hline Username & User name used to login to the database \\
|
||||
\hline Password & password used with \textsl{Username} to connect to the database\\
|
||||
\hline
|
||||
\end{tabular}
|
||||
\end{table}
|
||||
Once the parameters have been filled in, you can test the connection by clicking on the \textsl{Test Connection} button. To save the password with the connection information, check the \textsl{Save Password} option.
|
||||
\begin{Tip}\caption{\textsc{QGIS User Settings and Security}}
|
||||
\qgistip{Your customized settings for QGIS are stored based on the operating system. On Linux/Unix, the settings are stored in your home directory in .qt/qgisrc. On Windows, the settings are stored in the registry. Depending on your computing environment, storing passwords in your QGIS settings may be a security risk.
|
||||
}
|
||||
\end{Tip}
|
||||
\subsubsection{Loading a PostGIS Layer}
|
||||
\parpic[l]{\includegraphics{qgis_user_guide_images/addpostgis}}Once you have one or more connections defined, you can load layers from the PostgreSQL database. Of course this requires having data in PostgreSQL. See Section \ref{sec:loading_postgis_data} for a discussion on importing data into the database. \\
|
||||
|
||||
To load a layer from PostGIS, perform the following steps:
|
||||
\begin{compactenum}
|
||||
\item If the PostGIS layer dialog is not already open, click on the \textit{Add a PostGIS Layer} toolbar button
|
||||
\item Choose the connection from the drop-down list and click \textsl{Connect}
|
||||
\item Find the layer you wish to add in the list of available layers
|
||||
\item Select it by clicking on it. You can select multiple layers by holding down the shift key while clicking
|
||||
\item Click on the \textsl{Add} button to add the layer to the map
|
||||
\end{compactenum}
|
||||
\begin{Tip}\caption{\textsc{Using a Definition Query with PostGIS Layers}}
|
||||
\qgistip{If you wish to further define the features added from a PostGIS layer, double-click on the layer to open the SQL editor. Enter a conditional statement to be used to select features from the layer for display. For example, if you have a towns layer with a population field you could select only larger towns by entering \textsl{population > 100000}. Currently the SQL editor does not provide a list of field names to aid you in forming the conditional statement. The editor will be improved in a future release. Field names and values can be examined by loading the layer without a conditional statement and using the identify tool or by opening the attribute table.
|
||||
}
|
||||
\end{Tip}
|
||||
\subsubsection{Importing Data into PostgreSQL}\label{sec:loading_postgis_data}
|
||||
Data can be imported into PostgreSQL using a number of methods. PostGIS includes a utility called shp2pgsql that can be used to import shapefiles into a PostGIS enabled database. \\
|
||||
|
||||
\parpic[l]{\includegraphics{qgis_user_guide_images/spiticon}}QGIS comes with a plugin named SPIT (Shapefile to PostGIS Import Tool). SPIT can be used to load mutliple shapefiles at one time and includes support for schemas. To use SPIT, open the Plugin Manager from the Tools menu and load the plugin by checking the box next to the SPIT plugin and click Ok. The SPIT icon will be added to the plugin toolbar. \\
|
||||
|
||||
To import a shapefile, click on the SPIT tool in the toolbar to open the dialog. You can add one or more files to the queue by clicking on the \textsl{Add} button. To process the files, click on the Import button. The progress of the import as well as any errors/warnings will be displayed as each shapefile is processed.
|
||||
\begin{Tip}\caption{\textsc{Importing Shapefiles Containing PostgreSQL Reserved Words}}
|
||||
\qgistip{SPIT does not handle importing of shapefiles that contain field names that are reserved words in the PostgreSQL database. This issue will be addressed in a future release of the plugin
|
||||
}
|
||||
\end{Tip}
|
||||
\subsection{The Vector Properties Dialog}
|
||||
The vector properties dialog provides information about a layer, symbology settings, and labeling options. To access the properties dialog, double-click on a layer in the legend or right-click on the layer and select Properties from the popup menu.
|
||||
|
||||
\subsubsection{Vector Symbology}\label{sec:symbology}
|
||||
|
||||
QGIS supports a number of symbology renderers to control how
|
||||
vector features are displayed. Currently the following renderers
|
||||
are available:
|
||||
|
||||
\begin{compactdesc}
|
||||
\item[Single symbol] - a single style is applied to every
|
||||
object in the layer.
|
||||
\item[Graduated symbol] - objects within the layer are
|
||||
displayed with different symbols classified by the values of a
|
||||
particular field.
|
||||
\item[Continuous colour] - objects within the layer are
|
||||
displayed with a spread of colours classified by the numerical
|
||||
values within a specified field.
|
||||
\item[Unique value] - objects are classified by the unique
|
||||
values within a specified field with each value having a
|
||||
different symbol.
|
||||
\end{compactdesc}
|
||||
|
||||
For layers containing point features, additional renderers are
|
||||
available that use SVG icons:
|
||||
|
||||
\begin{compactdesc}
|
||||
\item[Single marker] - a single specified icon is used for
|
||||
every point within the layer.
|
||||
\item[Graduated marker] - points within the layer are
|
||||
displayed with different icons classified by values within a
|
||||
particular field
|
||||
\item[Unique value marker] - points are classified by unique
|
||||
values within a specified field with each value having a
|
||||
different icon.
|
||||
\end{compactdesc}
|
||||
|
||||
|
||||
\section{Working with Raster Data}
|
||||
QGIS supports a number of raster data formats. This section describes how to work with raster data in QGIS.
|
||||
\subsection{What is raster data?}
|
||||
|
||||
Raster data in GIS are matrices of discrete cells that represent features on, above or below the earth's surface. Each cell in the raster grid is the same size, and cells are usually rectangular (in QGIS they will always be rectangular). Typical raster datasets include remote sensing data such as aerial photography or satellite imagery and modelled data such as an elevation matrix.\\
|
||||
|
||||
Unlike vector data, raster data typically do not have an associated database record for each cell.\\
|
||||
|
||||
In GIS, a raster layer would have georeferencing data associated with it which will allow it to be positioned correctly in the map display to allow other vector and raster data to be overlayed with it. QGIS makes use of georeferenced rasters to properly display the data.
|
||||
|
||||
\subsection{Raster formats supported in QGIS}
|
||||
QGIS supports a number of different raster formats. Currently tested formats include:
|
||||
\begin{compactitem}
|
||||
\item Arc/Info Binary Grid
|
||||
\item Arc/Info ASCII Grid
|
||||
\item Grass Raster
|
||||
\item GeoTIFF
|
||||
\item Spatial Data Transfer Standard Grids (with some limitations)
|
||||
\item USGS ASCII DEM
|
||||
\item Erdas Imagine
|
||||
\end{compactitem}
|
||||
Because the raster implmentation in QGIS is based on the GDAL library, other raster formats implemented in GDAL are also likely to work, but have not yet been tested. See Appendix \ref{appdx_gdal} for more details.
|
||||
|
||||
\subsection{Loading raster data in QGIS}
|
||||
\parpic[l]{\includegraphics{qgis_user_guide_images/addraster}}Raster layers are loaded either by clicking on the Load Raster icon or by selecting the View->Add Raster Layer menu option. More than one layer can be loaded at the same time by holding down the Control key and clicking on multiple items in the file dialog.\\
|
||||
|
||||
\subsection{Raster Properties}
|
||||
|
||||
\parpic[r]{\includegraphics[scale=0.6]{qgis_user_guide_images/rastercontextmenu}}To view and set the properties for a raster layer, right click on the layer name. This displays the raster layer context menu that includes a number of items that allow you to:
|
||||
\begin{compactitem}
|
||||
\item Zoom to the full extent of the raster
|
||||
\item Show the raster in the map overview window
|
||||
\item Open the properties dialog (of course)
|
||||
\item Remove the layer from the map
|
||||
\item Set the transparency using a slider control
|
||||
\end{compactitem}
|
||||
Choose \textsl{Properties} from the context menu to open the raster properties dialog for the layer.\\
|
||||
|
||||
|
||||
Figure \ref{fig:raster_properties} shows the properties dialog. There are four tabs on the dialog: \textsl{Symbology}, \textsl{General}, \textsl{Metadata}, and \textsl{Pyramids}.
|
||||
|
||||
\begin{figure}[h]
|
||||
\begin{center}
|
||||
\caption{Raster Layers Properties Dialog}\label{fig:raster_properties}\smallskip
|
||||
\includegraphics[scale=.7]{qgis_user_guide_images/raster_properties}
|
||||
\end{center}
|
||||
\end{figure}
|
||||
|
||||
|
||||
\subsubsection{Symbology Tab}
|
||||
|
||||
|
||||
QGIS supports three forms of raster layers:
|
||||
\begin{compactitem}
|
||||
\item Single Band Grayscale Rasters
|
||||
\item Palette Based RGB Rasters
|
||||
\item Multiband RGB Rasters
|
||||
\end{compactitem}
|
||||
|
||||
From these three basic layer types, eight forms of symbolised raster display can be used:
|
||||
\begin{compactenum}
|
||||
|
||||
\item Single Band Grayscale
|
||||
\item Single Band Pseudocolor
|
||||
\item Paletted Grayscale (where only the red, green or blue component of the image is displayed)
|
||||
\item Paletted Pseudocolor (where only the red, green or blue component of the image is displayed, but using a pseudocolor algorithm)
|
||||
\item Paletted RGB
|
||||
\item Multiband Grayscale (using only one of the bands to display the image)
|
||||
\item Mulitiband Pseudocolor (using only one of the bands shown in pseudocolor)
|
||||
\item Multiband RGB (using any combination of three bands)
|
||||
\end{compactenum}
|
||||
\smallskip
|
||||
QGIS can invert the colors in a given layer so that light colors become dark (and dark colors become light). Use the \textsl{Invert Color Map} checkbox to enable / disable this behavior.\\
|
||||
|
||||
QGIS has the ability to display each raster layer at varying transparency levels. Use the transparency slider to indicate to what extent the underlying layers (if any) should be visible though the current raster layer. The transparency can also be set using the transparency slider in the layer context menu which is accessible by right-clicking on the layer in the legend.\\
|
||||
|
||||
QGIS can restrict the data displayed to only show cells whose values are within a given number of standard deviations of the mean for the layer. This is useful when you have one or two cells with abnormally high values in a raster grid that are having a negative impact on the rendering of the raster. This option is only available for pseudocolor images.\\
|
||||
|
||||
\subsubsection{General Tab}
|
||||
The General tab displays basic information about the selected raster, including the layer source and display name in the legend (which can be modified). This tab also shows a thumbnail of the layer, its legend symbol, and the palette.
|
||||
|
||||
\subsubsection{Metadata Tab}
|
||||
The Metadata tab displays a wealth of information about the raster layer, including statistics about each band in the current raster layer. Statistics are gathered on a 'need to know' basis, so it may well be that a given layers statistics have not yet been collected.
|
||||
|
||||
|
||||
\begin{Tip}\caption{\textsc{Gathering Raster Statistics}}
|
||||
\qgistip{To gather statistics for a layer, select pseudocolor rendering and click the \textsl{Apply} button. Gathering statistics for a layer can be time consuming. Please be patient while QGIS examines your data!
|
||||
}
|
||||
\end{Tip}
|
||||
\subsubsection{Pyramids Tab}
|
||||
Large resolution raster layers can slow navigation in QGIS. By creating lower resolution copies of the data (pyramids), performance can be considerably improved as QGIS selects the most suitable resolution to use depending on the level of zoom. \\
|
||||
|
||||
You must have write access in the directory where the original data is stored to build pyramids. \\
|
||||
|
||||
Please note that building pyramids may alter the original data file and once created they cannot be removed. If you wish to preserve a 'non-pyramided' version of your raster, make a backup copy prior to building pyramids.
|
||||
\section{GRASS}\label{sec:grass}
|
||||
The GRASS plugin adds the following features to QGIS:
|
||||
\begin{compactitem}
|
||||
\item Add GRASS vector layers
|
||||
\item Add GRASS raster layers
|
||||
\item Vector layers digitizing
|
||||
\item Changing of the GRASS region
|
||||
\end{compactitem}
|
||||
\subsection{Starting QGIS with GRASS}\label{sec:starting_grass}
|
||||
When using the GRASS plugin, QGIS can be started in two ways: from the GRASS shell or from a regular shell.
|
||||
\subsubsection{From GRASS shell}
|
||||
|
||||
If QGIS is started from the GRASS shell (GRASS started by grass57 command), no additional settings are required.
|
||||
\subsubsection{Outside GRASS shell}
|
||||
|
||||
If QGIS is not started from the GRASS shell, the environment variables must be properly set before starting QGIS.\\
|
||||
|
||||
The path to GRASS libraries must be added to LD\_LIBRARY\_PATH environment variable. For example (in bash):
|
||||
\begin{verbatim}
|
||||
export LD_LIBRARY_PATH=/usr1/grass57/dist.i686-pc-linux-gnu/lib:$LD_LIBRARY_PATH
|
||||
\end{verbatim}
|
||||
|
||||
The GISBASE environment variable must be set to the full path of the directory where GRASS is installed (the same as used for --with-grass= option). For example (in bash):
|
||||
\begin{verbatim}
|
||||
export GISBASE=/usr1/grass57/dist.i686-pc-linux-gnu
|
||||
\end{verbatim}
|
||||
\subsection{Loading GRASS Data}
|
||||
With the GRASS plugin loaded, you can load a vector or raster layer using the appropriate button on the toolbar. \begin{Tip}\caption{\textsc{GRASS Data Loading}}
|
||||
\qgistip{If you have problems loading data or QGIS terminates abnormally, check to make sure you have started GRASS properly as described in Section \ref{sec:starting_grass}.
|
||||
}
|
||||
\end{Tip}
|
||||
\subsection{Vector Data Model}
|
||||
It is important to understand the GRASS vector data model prior to digitizing. In general,
|
||||
GRASS uses a topological vector model. This means that areas
|
||||
are not represented as closed polygons, but by one or more
|
||||
boundaries. A boundary between two adjacent areas is digitized
|
||||
only once, and it is shared by both areas. Boundaries must
|
||||
be connected without gaps. An area is identified (labeled) by the
|
||||
centroid of the area.\\
|
||||
|
||||
Besides boundaries and centroids, a vector map can also contain
|
||||
points and lines. All these geometry elements can be mixed
|
||||
in one vector.\\
|
||||
|
||||
It is possible to store more 'layers' in one vector dataset. For example,
|
||||
fields, forests and lakes can be stored in one vector. Adjacent
|
||||
forest and lake can share the same boundary, but they have separate attribute tables.
|
||||
It is also possible to attach attributes to boundaries. For example, the boundary between lake and forest is a road with different attribute table.\\
|
||||
%In addition, one geometry element can represent a geometry for more
|
||||
%features. For example, a road can be a marked turistic route at the same
|
||||
%time.
|
||||
|
||||
The 'layer' of the feature is defined by 'field' (sorry for this name).
|
||||
'Field' is the number which defines if the geometry is forest or lake.
|
||||
For now, it can be only a number, in the future GRASS will also support
|
||||
names as fields in the user interface.\\
|
||||
|
||||
Attributes are stored in external database tables, for example
|
||||
DBF, PostgreSQL, etc.\\
|
||||
|
||||
Attributes in database tables are linked to geometry elements
|
||||
using 'category'. 'Category' (key, ID) is an integer attached to
|
||||
geometry primitives, and it is used as the link to one column in the database table.\\
|
||||
\begin{Tip}\caption{\textsc{Learning the GRASS Vector Model}}
|
||||
\qgistip{The best way to learn the GRASS vector model and its capabilities
|
||||
is to download the demo mapset from \url{http://mpa.itc.it/radim/g51/g51test-12-multi.tar.gz}.
|
||||
Extract the mapset, add all layers from vector 'multi' to QGIS, and query attributes.
|
||||
Finaly start editing of vector 'multi', to see how those layers are stored.
|
||||
}
|
||||
\end{Tip}
|
||||
\subsection{Digitizing and Editing Tools}
|
||||
The digitizing tools for GRASS vector layers are accessed using the \textsl{Edit GRASS Vector Layer} tool on the toolbar. Make sure you have loaded a GRASS vector and it is the selected layer in the legend before clicking on the edit tool. In this release, the vector must exist prior to beginning to edit. The ability to create a new "empty" layer will be added in a future version. Figure \ref{fig:grass_edit} shows the GRASS Edit dialog that is displayed when you click on the edit tool.
|
||||
\begin{figure}[h]
|
||||
\begin{center}
|
||||
\caption{GRASS Edit Dialog}\label{fig:grass_edit}\smallskip
|
||||
\includegraphics[scale=.7]{qgis_user_guide_images/grassedit}
|
||||
\end{center}
|
||||
\end{figure}
|
||||
The tools and settings are discussed in the following sections.\\
|
||||
\subsubsection{Toolbar}
|
||||
Table \ref{tab:grass_tools} lists the digitizing tools provided by the GRASS plugin. These correspond to the tool buttons in the toolbar(s) across the top of the dialog.
|
||||
\begin{table}[h]
|
||||
\centering
|
||||
\caption{GRASS Digitizing Tools}\label{tab:grass_tools}\medskip
|
||||
\begin{tabular}{|l|p{5in}|}
|
||||
\hline \textbf{Tool} & \textbf{Purpose} \\
|
||||
\hline New Point & digitize new point \\
|
||||
\hline New Line & digitize new line (finish by selecting new tool) \\
|
||||
\hline New Boundary & digitize new boundary (finish by selecting new tool)\\
|
||||
\hline New Centroid & digitize new centroid (label existing area)\\
|
||||
\hline Move vertex & select one vertex of existing line or boundary and identify new position\\
|
||||
\hline Add vertex & add a new vertex to existing line\\
|
||||
\hline Delete vertex & delete one vertex from existing line (confirm selected vertex by another click)\\
|
||||
\hline Move line & select existing line and click on new position\\
|
||||
\hline Split line & split an existing line to 2 parts\\
|
||||
\hline Delete line & delete existing line (confirm selected line by another click)\\
|
||||
\hline Edit attributes & edit attributes of existing element (note that one element can represent more features, see above)\\
|
||||
\hline Mug & close digitizing session\\
|
||||
\hline
|
||||
\end{tabular}
|
||||
\end{table}
|
||||
\subsubsection{Category Tab}
|
||||
This tab allows you to set the way in which the category will be assigned to each new feature and/or assign a category to a feature.
|
||||
\begin{compactitem}
|
||||
\item Mode: what category should be attached to geometry
|
||||
\begin{compactitem}
|
||||
\item Next not used - next category not yet used in vector
|
||||
\item Manual entry - define the category in 'Category entry'
|
||||
\item No category - digitize geometry without category
|
||||
\end{compactitem}
|
||||
\item Category - a number (ID) attached to digitized feature
|
||||
\item Field - feature (attribute table) identification
|
||||
\end{compactitem}
|
||||
\subsubsection{Settings Tab}
|
||||
This tab allow you to set the snapping in screen pixels. This is the threshold in pixels in which new points or line ends are snapped to existing nodes. This helps prevent gaps or dangles between boundaries
|
||||
|
||||
\subsubsection{Symbology Tab}
|
||||
This tab allows you to view and set symbology for various geometry types and their topological status (e.g. closed / opened boundary).
|
||||
|
||||
\subsubsection{Table}
|
||||
This tab provides the means to view, create, or modify the database table for a given field.
|
||||
\begin{Tip}\caption{\textsc{GRASS Edit Permissions}}
|
||||
\qgistip{You must be the owner of the GRASS mapset you want to edit. It is impossible to edit vectors in mapsets which are not yours, even if you have write permissions.
|
||||
}
|
||||
\end{Tip}
|
||||
|
||||
\subsubsection{Region Tool}
|
||||
|
||||
The current region (window) in GRASS is very important for all
|
||||
raster modules. All new created rasters have the extension and resolution
|
||||
of the current region, regardless their original region.
|
||||
The region is stored in \$LOCATION/\$MAPSET/WIND file, and it defines
|
||||
north, south, east, west, number of columns, number of rows,
|
||||
horizontal and vertical resolution.\\
|
||||
|
||||
It is possible to switch on/off the grass region in QGIS canvas
|
||||
using the \textsl{Display Current GRASS Region} button.\\
|
||||
|
||||
With the \textsl{Edit Current GRASS Region} you can open a tool
|
||||
in which you can change the current region and symbology
|
||||
of the rectangle on the QGIS Canvas. When the tool is running,
|
||||
it is also possible to select a new region interactively
|
||||
on the QGIS canvas.\\
|
||||
|
||||
Both tools are available only if QGIS was started from a GRASS
|
||||
shell or if the GISRC enviroment variable pointing to a
|
||||
valid GISRC file was set (i.e. only if you are running
|
||||
GRASS within your mapset).
|
||||
|
||||
%\subsection{The GRASS Toolbar}
|
||||
%The GRASS toolbar is displayed when the GRASS plugin is loaded using the Plugin Manager (see Section \ref{sec:managing_plugins}, \textsl{Managing Plugins}). Figure shows the toolbar with each function annotated.
|
||||
|
||||
\section{Using Plugins}
|
||||
QGIS has been designed with a plugin architecture. This allows new features/functions to be added to the application. Many of the features in QGIS are actually implemented as plugins.\\
|
||||
|
||||
There are two types of plugins in QGIS: core and user-contributed. A core plugin is maintained by the QGIS development team and is part of every QGIS distribtution. A user-contributed plugin is an external plugin that is maintained by the individual author. The QGIS Community site (\url{http://community.qgis.org}) serves as the repository for user contributed plugins.
|
||||
|
||||
\subsection{Finding and Installing a Plugin}
|
||||
When you install QGIS, all of the core plugins are included (these are described below). Additional user-contributed plugins may be available on the QGIS Community site. To see what user-contributed plugins are available, see the plugins page on the Community site (\url{http://community.qgis.org/plugins}).\\
|
||||
|
||||
Typically user-contributed plugins are distributed in source form and require compiling. For instructions on building and installing a user-contributed plugin, see the documentation included with the plugin.
|
||||
\subsection{Managing Plugins}\label{sec:managing_plugins}
|
||||
Managing plugins consists of loading or unloading them from QGIS. Loaded plugins are "remembered" when you exit the application and restored the next time you run QGIS.\\
|
||||
|
||||
To manage plugins, open the \textsl{Plugin Manager} from the \textsl{Tools} menu. The Plugin Manager displays all the available plugins and their status (loaded or unloaded). Figure \ref{fig:pluginmanager} shows the Plugin Manager dialog.
|
||||
|
||||
\begin{figure}[h]
|
||||
\begin{center}
|
||||
\caption{Plugin Manager}\label{fig:pluginmanager}\smallskip
|
||||
\includegraphics{qgis_user_guide_images/pluginmanager_80pct}
|
||||
\end{center}
|
||||
\end{figure}
|
||||
Typically all QGIS plugins are installed in the same location. This location is shown in the Plugin Directory text field. You can tell QGIS to load plugins from another location by specifying a different directory.
|
||||
\begin{Tip}\caption{\textsc{Crashing Plugins}}
|
||||
\qgistip{If you find that QGIS crashes on startup, a plugin may be at fault. You can stop all plugins from loading by editing your .qt/qgisrc file in your home directory on Linux/Unix (Windows users will have to edit the registry). On Linux/Unix, open the qgisrc file in a text editor and find the [Plugins] section. Set all the plugin values to false to prevent them from loading. For example, to prevent the Delimited text plugin from loading, the entry in qgisrc should look like this:\ttfamily{
|
||||
Add Delimited Text Layer=false}.\normalfont Do this for each plugin in the [Plugins] section. You can then start QGIS and add the plugins one at a time from the Plugin Manger to determine which is causing the problem.
|
||||
|
||||
}
|
||||
\end{Tip}
|
||||
|
||||
\subsection{Data Providers}
|
||||
Data Providers are "special" plugins that provides access to a data store. By default, QGIS supports PostGIS layers and disk-based data stores supported by the OGR library (Appendix \ref{appdx_ogr}). A Data Provider plugin extends the ability of QGIS to use other data sources.\\
|
||||
|
||||
Data Provider plugins are registered automatically by QGIS at startup. They are not managed by the Plugin Manager but are used behind the scenes when a corresponding data type is added as a layer in QGIS.
|
||||
\subsection{Core Plugins}
|
||||
QGIS currently contains 9 core plugins that can be loaded using the Plugin Manager. Table \ref{tab:core_plugins} lists each of the core plugins along with a description of their purpose. Figure \ref{fig:plugintoolbar} shows the icon for each plugin in the Plugin toolbar (the number corresponds to the Item in Table \ref{tab:core_plugins}. Note the GRASS plugin is not included below because it installs its own toolbar (see Section \ref{sec:grass} for a discussion of available features in GRASS plugin).
|
||||
\begin{table}[h]
|
||||
\centering
|
||||
\caption{QGIS Core Plugins}\label{tab:core_plugins}\medskip
|
||||
\small
|
||||
\begin{tabular}{|l|l|p{4in}|}
|
||||
\hline \textbf{Item} & \textbf{Plugin} & \textbf{Description} \\
|
||||
\hline 1 & Copyright Label & Display a copyright label on the map canvas\\
|
||||
\hline 2 & Delimited Text & Load a delimited text file containing x,y coordinates as a point layer \\
|
||||
\hline 3 & GPS Tools & Load and display GPS data \\
|
||||
\hline 4 & Graticule Creator & Create a latitude/longitude grid and save as a shapefile\\
|
||||
\hline 5 & Scalebar & Add a scalebar to the map canvas\\
|
||||
\hline 6 & North Arrow & Add a north arrow to the map canvas\\
|
||||
\hline 7 & PostgreSQL Geoprocessing & Buffer a PostGIS layer \\
|
||||
\hline 8 & SPIT & Shapefile to PostGIS Import Tool - import shapefiles into PostgreSQL\\
|
||||
\hline
|
||||
\end{tabular}
|
||||
\end{table}
|
||||
\normalsize
|
||||
\begin{figure}[h]
|
||||
\begin{center}
|
||||
\caption{Plugin Toolbar and Icons}\label{fig:plugintoolbar}\smallskip
|
||||
\includegraphics[scale=1.0]{qgis_user_guide_images/plugintoolbar}
|
||||
\end{center}
|
||||
\end{figure}
|
||||
\clearpage
|
||||
\appendix
|
||||
\section{Supported OGR Formats}\label{appdx_ogr}
|
||||
At the data of this document, the following formats are supported by the OGR library.
|
||||
\begin{compactitem}
|
||||
\item Arc/Info Binary Coverage
|
||||
\item Comma Separated Value (.csv)
|
||||
\item DODS/OPeNDAP
|
||||
\item ESRI Shapefile
|
||||
\item FMEObjects Gateway
|
||||
\item GML
|
||||
\item IHO S-57 (ENC)
|
||||
\item Mapinfo File
|
||||
\item Microstation DGN
|
||||
\item OGDI Vectors
|
||||
\item ODBC
|
||||
\item Oracle Spatial
|
||||
\item PostgreSQL\footnote{QGIS implements its own PostgreSQL functions. OGR should be built without PostgreSQL support}
|
||||
\item SDTS
|
||||
\item SQLite
|
||||
\item UK .NTF
|
||||
\item U.S. Census TIGER/Line
|
||||
\item VRT - Virtual Datasource
|
||||
\end{compactitem}
|
||||
\section{GDAL Raster Formats}\label{appdx_gdal}
|
||||
At the date of this document, the following formats are supported by the GDAL library. Note that not all of these format may work in QGIS for various reasons. For example, some require external commercial libraries. Only those formats that have been well tested will appear in the list of file types when loading a raster into QGIS. Other untested formats can be loaded by selecting the \textsl{All other files (*)} filter. Formats known to work in QGIS are indicated in \textbf{bold}.
|
||||
|
||||
\begin{compactitem}
|
||||
\item \textbf{Arc/Info ASCII Grid}
|
||||
\item \textbf{Arc/Info Binary Grid (.adf)}
|
||||
\item Microsoft Windows Device Independent Bitmap (.bmp)
|
||||
\item BSB Nautical Chart Format (.kap)
|
||||
\item VTP Binary Terrain Format (.bt)
|
||||
\item CEOS (Spot for instance)
|
||||
\item First Generation USGS DOQ (.doq)
|
||||
\item New Labelled USGS DOQ (.doq)
|
||||
\item Military Elevation Data (.dt0, .dt1)
|
||||
\item ERMapper Compressed Wavelets (.ecw)
|
||||
\item ESRI .hdr Labelled
|
||||
\item ENVI .hdr Labelled Raster
|
||||
\item Envisat Image Product (.n1)
|
||||
\item EOSAT FAST Format
|
||||
\item FITS (.fits)
|
||||
\item Graphics Interchange Format (.gif)
|
||||
\item \textbf{GRASS Rasters}\footnote{GRASS raster support is supplied by the QGIS GRASS data provider plugin}
|
||||
\item \textbf{TIFF / GeoTIFF (.tif)}
|
||||
\item Hierarchical Data Format Release 4 (HDF4)
|
||||
\item \textbf{Erdas Imagine (.img)}
|
||||
\item Atlantis MFF2e
|
||||
\item Japanese DEM (.mem)
|
||||
\item \textbf{JPEG JFIF (.jpg)}
|
||||
\item JPEG2000 (.jp2, .j2k)
|
||||
\item JPEG2000 (.jp2, .j2k)
|
||||
\item NOAA Polar Orbiter Level 1b Data Set (AVHRR)
|
||||
\item Erdas 7.x .LAN and .GIS
|
||||
\item In Memory Raster
|
||||
\item Atlantis MFF
|
||||
\item Multi-resolution Seamless Image Database MrSID
|
||||
\item NITF
|
||||
\item NetCDF
|
||||
\item OGDI Bridge
|
||||
\item PCI .aux Labelled
|
||||
\item PCI Geomatics Database File
|
||||
\item Portable Network Graphics (.png)
|
||||
\item Netpbm (.ppm,.pgm)
|
||||
\item \textbf{USGS SDTS DEM (*CATD.DDF)}
|
||||
\item SAR CEOS
|
||||
\item \textbf{USGS ASCII DEM (.dem)}
|
||||
\item X11 Pixmap (.xpm)
|
||||
|
||||
\end{compactitem}
|
||||
|
||||
\input{appendices/supported_data_formats.tex}
|
||||
\input{appendices/gpl.tex}
|
||||
\input{appendices/qgis_qt_gpl_exception.tex}
|
||||
%install guide is a special case because we are snarfing it
|
||||
%out of a separate document, we need to add the chapter here
|
||||
\chapter{QGIS Installation Guide}
|
||||
\label{install_guide}
|
||||
\input{../install_guide/install_source.tex}
|
||||
|
||||
|
||||
\end{onehalfspace}
|
||||
|
||||
\index{PostgreSQL!layer defintion| \see{query builder}}
|
||||
\index{PostgreSQL!importing data| \see{SPIT}}
|
||||
\index{layers!vector| \see{vector layers}}
|
||||
\index{vector layers!symbology!renderers| \see{renderers}}
|
||||
\index{layers!raster| \see{rasters}}
|
||||
\index{attribute actions| \see{actions}}
|
||||
\printindex
|
||||
\end{document}
|
||||
|
5
doc/source/user_guide/qgis_user_guide_images/convert2eps.sh
Executable file
@ -0,0 +1,5 @@
|
||||
#!/bin/bash
|
||||
for MY_FILENAME in $(ls *.png); do
|
||||
FILENAMEBASE=`echo $MY_FILENAME |sed 's/\.png//g'`
|
||||
convert $MY_FILENAME $FILENAMEBASE.eps
|
||||
done
|
After Width: | Height: | Size: 72 KiB |
BIN
doc/source/user_guide/qgis_user_guide_images/editable.png
Normal file
After Width: | Height: | Size: 213 B |
BIN
doc/source/user_guide/qgis_user_guide_images/inoverview.png
Normal file
After Width: | Height: | Size: 628 B |
BIN
doc/source/user_guide/qgis_user_guide_images/no_pyramid.png
Normal file
After Width: | Height: | Size: 644 B |
@ -0,0 +1,347 @@
|
||||
%!PS-Adobe-3.0 EPSF-3.0
|
||||
%%Creator: (ImageMagick)
|
||||
%%Title: (ellipsis.png.eps)
|
||||
%%CreationDate: (Mon Dec 20 01:49:17 2004)
|
||||
%%BoundingBox: 0 0 33 25
|
||||
%%HiResBoundingBox: 0 0 33 25
|
||||
%%DocumentData: Clean7Bit
|
||||
%%LanguageLevel: 1
|
||||
%%Pages: 1
|
||||
%%EndComments
|
||||
|
||||
%%BeginDefaults
|
||||
%%EndDefaults
|
||||
|
||||
%%BeginProlog
|
||||
%
|
||||
% Display a color image. The image is displayed in color on
|
||||
% Postscript viewers or printers that support color, otherwise
|
||||
% it is displayed as grayscale.
|
||||
%
|
||||
/DirectClassPacket
|
||||
{
|
||||
%
|
||||
% Get a DirectClass packet.
|
||||
%
|
||||
% Parameters:
|
||||
% red.
|
||||
% green.
|
||||
% blue.
|
||||
% length: number of pixels minus one of this color (optional).
|
||||
%
|
||||
currentfile color_packet readhexstring pop pop
|
||||
compression 0 eq
|
||||
{
|
||||
/number_pixels 3 def
|
||||
}
|
||||
{
|
||||
currentfile byte readhexstring pop 0 get
|
||||
/number_pixels exch 1 add 3 mul def
|
||||
} ifelse
|
||||
0 3 number_pixels 1 sub
|
||||
{
|
||||
pixels exch color_packet putinterval
|
||||
} for
|
||||
pixels 0 number_pixels getinterval
|
||||
} bind def
|
||||
|
||||
/DirectClassImage
|
||||
{
|
||||
%
|
||||
% Display a DirectClass image.
|
||||
%
|
||||
systemdict /colorimage known
|
||||
{
|
||||
columns rows 8
|
||||
[
|
||||
columns 0 0
|
||||
rows neg 0 rows
|
||||
]
|
||||
{ DirectClassPacket } false 3 colorimage
|
||||
}
|
||||
{
|
||||
%
|
||||
% No colorimage operator; convert to grayscale.
|
||||
%
|
||||
columns rows 8
|
||||
[
|
||||
columns 0 0
|
||||
rows neg 0 rows
|
||||
]
|
||||
{ GrayDirectClassPacket } image
|
||||
} ifelse
|
||||
} bind def
|
||||
|
||||
/GrayDirectClassPacket
|
||||
{
|
||||
%
|
||||
% Get a DirectClass packet; convert to grayscale.
|
||||
%
|
||||
% Parameters:
|
||||
% red
|
||||
% green
|
||||
% blue
|
||||
% length: number of pixels minus one of this color (optional).
|
||||
%
|
||||
currentfile color_packet readhexstring pop pop
|
||||
color_packet 0 get 0.299 mul
|
||||
color_packet 1 get 0.587 mul add
|
||||
color_packet 2 get 0.114 mul add
|
||||
cvi
|
||||
/gray_packet exch def
|
||||
compression 0 eq
|
||||
{
|
||||
/number_pixels 1 def
|
||||
}
|
||||
{
|
||||
currentfile byte readhexstring pop 0 get
|
||||
/number_pixels exch 1 add def
|
||||
} ifelse
|
||||
0 1 number_pixels 1 sub
|
||||
{
|
||||
pixels exch gray_packet put
|
||||
} for
|
||||
pixels 0 number_pixels getinterval
|
||||
} bind def
|
||||
|
||||
/GrayPseudoClassPacket
|
||||
{
|
||||
%
|
||||
% Get a PseudoClass packet; convert to grayscale.
|
||||
%
|
||||
% Parameters:
|
||||
% index: index into the colormap.
|
||||
% length: number of pixels minus one of this color (optional).
|
||||
%
|
||||
currentfile byte readhexstring pop 0 get
|
||||
/offset exch 3 mul def
|
||||
/color_packet colormap offset 3 getinterval def
|
||||
color_packet 0 get 0.299 mul
|
||||
color_packet 1 get 0.587 mul add
|
||||
color_packet 2 get 0.114 mul add
|
||||
cvi
|
||||
/gray_packet exch def
|
||||
compression 0 eq
|
||||
{
|
||||
/number_pixels 1 def
|
||||
}
|
||||
{
|
||||
currentfile byte readhexstring pop 0 get
|
||||
/number_pixels exch 1 add def
|
||||
} ifelse
|
||||
0 1 number_pixels 1 sub
|
||||
{
|
||||
pixels exch gray_packet put
|
||||
} for
|
||||
pixels 0 number_pixels getinterval
|
||||
} bind def
|
||||
|
||||
/PseudoClassPacket
|
||||
{
|
||||
%
|
||||
% Get a PseudoClass packet.
|
||||
%
|
||||
% Parameters:
|
||||
% index: index into the colormap.
|
||||
% length: number of pixels minus one of this color (optional).
|
||||
%
|
||||
currentfile byte readhexstring pop 0 get
|
||||
/offset exch 3 mul def
|
||||
/color_packet colormap offset 3 getinterval def
|
||||
compression 0 eq
|
||||
{
|
||||
/number_pixels 3 def
|
||||
}
|
||||
{
|
||||
currentfile byte readhexstring pop 0 get
|
||||
/number_pixels exch 1 add 3 mul def
|
||||
} ifelse
|
||||
0 3 number_pixels 1 sub
|
||||
{
|
||||
pixels exch color_packet putinterval
|
||||
} for
|
||||
pixels 0 number_pixels getinterval
|
||||
} bind def
|
||||
|
||||
/PseudoClassImage
|
||||
{
|
||||
%
|
||||
% Display a PseudoClass image.
|
||||
%
|
||||
% Parameters:
|
||||
% class: 0-PseudoClass or 1-Grayscale.
|
||||
%
|
||||
currentfile buffer readline pop
|
||||
token pop /class exch def pop
|
||||
class 0 gt
|
||||
{
|
||||
currentfile buffer readline pop
|
||||
token pop /depth exch def pop
|
||||
/grays columns 8 add depth sub depth mul 8 idiv string def
|
||||
columns rows depth
|
||||
[
|
||||
columns 0 0
|
||||
rows neg 0 rows
|
||||
]
|
||||
{ currentfile grays readhexstring pop } image
|
||||
}
|
||||
{
|
||||
%
|
||||
% Parameters:
|
||||
% colors: number of colors in the colormap.
|
||||
% colormap: red, green, blue color packets.
|
||||
%
|
||||
currentfile buffer readline pop
|
||||
token pop /colors exch def pop
|
||||
/colors colors 3 mul def
|
||||
/colormap colors string def
|
||||
currentfile colormap readhexstring pop pop
|
||||
systemdict /colorimage known
|
||||
{
|
||||
columns rows 8
|
||||
[
|
||||
columns 0 0
|
||||
rows neg 0 rows
|
||||
]
|
||||
{ PseudoClassPacket } false 3 colorimage
|
||||
}
|
||||
{
|
||||
%
|
||||
% No colorimage operator; convert to grayscale.
|
||||
%
|
||||
columns rows 8
|
||||
[
|
||||
columns 0 0
|
||||
rows neg 0 rows
|
||||
]
|
||||
{ GrayPseudoClassPacket } image
|
||||
} ifelse
|
||||
} ifelse
|
||||
} bind def
|
||||
|
||||
/DisplayImage
|
||||
{
|
||||
%
|
||||
% Display a DirectClass or PseudoClass image.
|
||||
%
|
||||
% Parameters:
|
||||
% x & y translation.
|
||||
% x & y scale.
|
||||
% label pointsize.
|
||||
% image label.
|
||||
% image columns & rows.
|
||||
% class: 0-DirectClass or 1-PseudoClass.
|
||||
% compression: 0-none or 1-RunlengthEncoded.
|
||||
% hex color packets.
|
||||
%
|
||||
gsave
|
||||
/buffer 512 string def
|
||||
/byte 1 string def
|
||||
/color_packet 3 string def
|
||||
/pixels 768 string def
|
||||
|
||||
currentfile buffer readline pop
|
||||
token pop /x exch def
|
||||
token pop /y exch def pop
|
||||
x y translate
|
||||
currentfile buffer readline pop
|
||||
token pop /x exch def
|
||||
token pop /y exch def pop
|
||||
currentfile buffer readline pop
|
||||
token pop /pointsize exch def pop
|
||||
/Times-Roman findfont pointsize scalefont setfont
|
||||
x y scale
|
||||
currentfile buffer readline pop
|
||||
token pop /columns exch def
|
||||
token pop /rows exch def pop
|
||||
currentfile buffer readline pop
|
||||
token pop /class exch def pop
|
||||
currentfile buffer readline pop
|
||||
token pop /compression exch def pop
|
||||
class 0 gt { PseudoClassImage } { DirectClassImage } ifelse
|
||||
grestore
|
||||
} bind def
|
||||
%%EndProlog
|
||||
%%Page: 1 1
|
||||
%%PageBoundingBox: 0 0 33 25
|
||||
userdict begin
|
||||
DisplayImage
|
||||
0 0
|
||||
33 25
|
||||
12.000000
|
||||
33 25
|
||||
0
|
||||
0
|
||||
FFFFFFE6E2EEC5C6CD949194949194949194949194949194949194949194949194949194
|
||||
949194949194949194949194949194949194949194949194949194949194949194949194
|
||||
949194949194949194949194949194C5C6CDE6E2EEFFFFFFFFFFFFFFFFFFC5C6CD949194
|
||||
F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6
|
||||
F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6
|
||||
F6F6F6F6F6F6949194C5C6CDFFFFFFFFFFFFFFFFFF949194F6F6F6EEEEF6EEEEF6EEEEF6
|
||||
EEEEF6EEEEF6EEEEF6EEEEF6EEEEF6EEEEF6EEEEF6EEEEF6EEEEF6EEEEF6EEEEF6EEEEF6
|
||||
EEEEF6EEEEF6EEEEF6EEEEF6EEEEF6EEEEF6EEEEF6EEEEF6EEEEF6EEEEF6EEEEF6E6E2E6
|
||||
949194FFFFFFFFFFFFFFFFFF949194F6F6F6EEEAEEEEEAEEEEEAEEEEEAEEEEEAEEEEEAEE
|
||||
EEEAEEEEEAEEEEEAEEEEEAEEEEEAEEEEEAEEEEEAEEEEEAEEEEEAEEEEEAEEEEEAEEEEEAEE
|
||||
EEEAEEEEEAEEEEEAEEEEEAEEEEEAEEEEEAEEEEEAEEEEEAEEE6E2E6949194FFFFFFFFFFFF
|
||||
FFFFFF949194F6F2F6EEEAEEEEEAEEEEEAEEEEEAEEEEEAEEEEEAEEEEEAEEEEEAEEEEEAEE
|
||||
EEEAEEEEEAEEEEEAEEEEEAEEEEEAEEEEEAEEEEEAEEEEEAEEEEEAEEEEEAEEEEEAEEEEEAEE
|
||||
EEEAEEEEEAEEEEEAEEEEEAEEEEEAEEDEE2E6949194FFFFFFFFFFFFFFFFFF949194F6F2F6
|
||||
E6EAEEE6EAEEE6EAEEE6EAEEE6EAEEE6EAEEE6EAEEE6EAEEE6EAEEE6EAEEE6EAEEE6EAEE
|
||||
E6EAEEE6EAEEE6EAEEE6EAEEE6EAEEE6EAEEE6EAEEE6EAEEE6EAEEE6EAEEE6EAEEE6EAEE
|
||||
E6EAEEE6EAEEDEE2E6949194FFFFFFFFFFFFFFFFFF949194F6F2F6E6EAEEE6EAEEE6EAEE
|
||||
E6EAEEE6EAEEE6EAEEE6EAEEE6EAEEE6EAEEE6EAEEE6EAEEE6EAEEE6EAEEE6EAEEE6EAEE
|
||||
E6EAEEE6EAEEE6EAEEE6EAEEE6EAEEE6EAEEE6EAEEE6EAEEE6EAEEE6EAEEE6EAEEDEDEE6
|
||||
949194FFFFFFFFFFFFFFFFFF949194EEF2F6E6E6EEE6E6EEE6E6EEE6E6EEE6E6EEE6E6EE
|
||||
E6E6EEE6E6EEE6E6EEE6E6EEE6E6EEE6E6EEE6E6EEE6E6EEE6E6EEE6E6EEE6E6EEE6E6EE
|
||||
E6E6EEE6E6EEE6E6EEE6E6EEE6E6EEE6E6EEE6E6EEE6E6EEDEDEE6949194FFFFFFFFFFFF
|
||||
FFFFFF949194EEF2F6E6E6EEE6E6EEE6E6EEE6E6EEE6E6EEE6E6EEE6E6EEE6E6EEE6E6EE
|
||||
E6E6EEE6E6EEE6E6EEE6E6EEE6E6EEE6E6EEE6E6EEE6E6EEE6E6EEE6E6EEE6E6EEE6E6EE
|
||||
E6E6EEE6E6EEE6E6EEE6E6EEE6E6EEDEDEE6949194FFFFFFFFFFFFFFFFFF949194EEEEF6
|
||||
E6E6EEE6E6EEE6E6EEE6E6EEE6E6EEE6E6EEE6E6EEE6E6EEE6E6EEE6E6EEE6E6EEE6E6EE
|
||||
E6E6EEE6E6EEE6E6EEE6E6EEE6E6EEE6E6EEE6E6EEE6E6EEE6E6EEE6E6EEE6E6EEE6E6EE
|
||||
E6E6EEE6E6EEDEDEE6949194FFFFFFFFFFFFFFFFFF949194EEEEF6E6E6EEE6E6EEE6E6EE
|
||||
E6E6EEE6E6EEE6E6EEE6E6EEE6E6EEE6E6EEE6E6EEE6E6EEE6E6EEE6E6EEE6E6EEE6E6EE
|
||||
E6E6EEE6E6EEE6E6EEE6E6EEE6E6EEE6E6EEE6E6EEE6E6EEE6E6EEE6E6EEE6E6EEDEDADE
|
||||
949194FFFFFFFFFFFFFFFFFF949194EEEEEEE6E2E6E6E2E6E6E2E6E6E2E6E6E2E6E6E2E6
|
||||
E6E2E6E6E2E6E6E2E6E6E2E6E6E2E6E6E2E6E6E2E6E6E2E6E6E2E6E6E2E6E6E2E6E6E2E6
|
||||
E6E2E6E6E2E6E6E2E6E6E2E6E6E2E6E6E2E6E6E2E6E6E2E6DEDADE949194FFFFFFFFFFFF
|
||||
FFFFFF949194EEEEEEE6E2E6E6E2E6E6E2E6E6E2E6E6E2E6E6E2E6E6E2E6E6E2E6E6E2E6
|
||||
E6E2E6E6E2E6E6E2E6E6E2E6E6E2E6E6E2E6E6E2E6E6E2E6E6E2E6E6E2E6E6E2E6E6E2E6
|
||||
E6E2E6E6E2E6E6E2E6E6E2E6E6E2E6D5DADE949194FFFFFFFFFFFFFFFFFF949194EEEAEE
|
||||
DEE2E6DEE2E6DEE2E6DEE2E6DEE2E6DEE2E6DEE2E6DEE2E6DEE2E6DEE2E6DEE2E6DEE2E6
|
||||
DEE2E6DEE2E6DEE2E6DEE2E6DEE2E6DEE2E6DEE2E6DEE2E6DEE2E6DEE2E6DEE2E6DEE2E6
|
||||
DEE2E6DEE2E6D5DADE949194FFFFFFFFFFFFFFFFFF949194EEEAEEDEE2E6DEE2E6DEE2E6
|
||||
DEE2E6DEE2E6DEE2E6DEE2E6DEE2E6DEE2E6A4AAACDEE2E6DEE2E6A4AAACDEE2E6DEE2E6
|
||||
A4AAACDEE2E6DEE2E6DEE2E6DEE2E6DEE2E6DEE2E6DEE2E6DEE2E6DEE2E6DEE2E6D5D6DE
|
||||
949194FFFFFFFFFFFFFFFFFF949194EEEAEEDEDEE6DEDEE6DEDEE6DEDEE6DEDEE6DEDEE6
|
||||
DEDEE6DEDEE6DEDEE6000000DEDEE6DEDEE6000000DEDEE6DEDEE6000000DEDEE6DEDEE6
|
||||
DEDEE6DEDEE6DEDEE6DEDEE6DEDEE6DEDEE6DEDEE6DEDEE6D5D6DE949194FFFFFFFFFFFF
|
||||
FFFFFF949194E6EAEEDEDEE6DEDEE6DEDEE6DEDEE6DEDEE6DEDEE6DEDEE6DEDEE6DEDEE6
|
||||
DEDEE6DEDEE6DEDEE6DEDEE6DEDEE6DEDEE6DEDEE6DEDEE6DEDEE6DEDEE6DEDEE6DEDEE6
|
||||
DEDEE6DEDEE6DEDEE6DEDEE6DEDEE6D5D6DE949194FFFFFFFFFFFFFFFFFF949194E6EAEE
|
||||
DEDEE6DEDEE6DEDEE6DEDEE6DEDEE6DEDEE6DEDEE6DEDEE6DEDEE6DEDEE6DEDEE6DEDEE6
|
||||
DEDEE6DEDEE6DEDEE6DEDEE6DEDEE6DEDEE6DEDEE6DEDEE6DEDEE6DEDEE6DEDEE6DEDEE6
|
||||
DEDEE6DEDEE6D5D6DE949194FFFFFFFFFFFFFFFFFF949194E6E6EEDEDEE6DEDEE6DEDEE6
|
||||
DEDEE6DEDEE6DEDEE6DEDEE6DEDEE6DEDEE6DEDEE6DEDEE6DEDEE6DEDEE6DEDEE6DEDEE6
|
||||
DEDEE6DEDEE6DEDEE6DEDEE6DEDEE6DEDEE6DEDEE6DEDEE6DEDEE6DEDEE6DEDEE6D5D2D5
|
||||
949194FFFFFFFFFFFFFFFFFF949194E6E6EEDEDADEDEDADEDEDADEDEDADEDEDADEDEDADE
|
||||
DEDADEDEDADEDEDADEDEDADEDEDADEDEDADEDEDADEDEDADEDEDADEDEDADEDEDADEDEDADE
|
||||
DEDADEDEDADEDEDADEDEDADEDEDADEDEDADEDEDADEDEDADED5D2D5949194FFFFFFFFFFFF
|
||||
FFFFFF949194E6E6EEDEDADEDEDADEDEDADEDEDADEDEDADEDEDADEDEDADEDEDADEDEDADE
|
||||
DEDADEDEDADEDEDADEDEDADEDEDADEDEDADEDEDADEDEDADEDEDADEDEDADEDEDADEDEDADE
|
||||
DEDADEDEDADEDEDADEDEDADEDEDADECDD2D5949194FFFFFFFFFFFFFFFFFF949194E6E6EE
|
||||
D5DADED5DADED5DADED5DADED5DADED5DADED5DADED5DADED5DADED5DADED5DADED5DADE
|
||||
D5DADED5DADED5DADED5DADED5DADED5DADED5DADED5DADED5DADED5DADED5DADED5DADE
|
||||
D5DADED5DADECDD2D5949194FFFFFFFFFFFFFFFFFF949194E6E6EED5DADED5DADED5DADE
|
||||
D5DADED5DADED5DADED5DADED5DADED5DADED5DADED5DADED5DADED5DADED5DADED5DADE
|
||||
D5DADED5DADED5DADED5DADED5DADED5DADED5DADED5DADED5DADED5DADED5DADECDCED5
|
||||
949194FFFFFFFFFFFFFFFFFFC5C6CD949194CDCED5CDCED5CDCED5CDCED5CDCED5CDCED5
|
||||
CDCED5CDCED5CDCED5CDCED5CDCED5CDCED5CDCED5CDCED5CDCED5CDCED5CDCED5CDCED5
|
||||
CDCED5CDCED5CDCED5CDCED5CDCED5CDCED5CDCED5CDCED5949194C5C6CDFFFFFFFFFFFF
|
||||
FFFFFFE6E2EEC5C6CD949194949194949194949194949194949194949194949194949194
|
||||
949194949194949194949194949194949194949194949194949194949194949194949194
|
||||
949194949194949194949194949194C5C6CDE6E2EEFFFFFFFFFFFF
|
||||
end
|
||||
%%PageTrailer
|
||||
%%Trailer
|
||||
%%EOF
|
@ -0,0 +1,326 @@
|
||||
%!PS-Adobe-3.0 EPSF-3.0
|
||||
%%Creator: (ImageMagick)
|
||||
%%Title: (toolbar_icon.png.eps)
|
||||
%%CreationDate: (Mon Dec 20 01:49:19 2004)
|
||||
%%BoundingBox: 0 0 25 23
|
||||
%%HiResBoundingBox: 0 0 25 23
|
||||
%%DocumentData: Clean7Bit
|
||||
%%LanguageLevel: 1
|
||||
%%Pages: 1
|
||||
%%EndComments
|
||||
|
||||
%%BeginDefaults
|
||||
%%EndDefaults
|
||||
|
||||
%%BeginProlog
|
||||
%
|
||||
% Display a color image. The image is displayed in color on
|
||||
% Postscript viewers or printers that support color, otherwise
|
||||
% it is displayed as grayscale.
|
||||
%
|
||||
/DirectClassPacket
|
||||
{
|
||||
%
|
||||
% Get a DirectClass packet.
|
||||
%
|
||||
% Parameters:
|
||||
% red.
|
||||
% green.
|
||||
% blue.
|
||||
% length: number of pixels minus one of this color (optional).
|
||||
%
|
||||
currentfile color_packet readhexstring pop pop
|
||||
compression 0 eq
|
||||
{
|
||||
/number_pixels 3 def
|
||||
}
|
||||
{
|
||||
currentfile byte readhexstring pop 0 get
|
||||
/number_pixels exch 1 add 3 mul def
|
||||
} ifelse
|
||||
0 3 number_pixels 1 sub
|
||||
{
|
||||
pixels exch color_packet putinterval
|
||||
} for
|
||||
pixels 0 number_pixels getinterval
|
||||
} bind def
|
||||
|
||||
/DirectClassImage
|
||||
{
|
||||
%
|
||||
% Display a DirectClass image.
|
||||
%
|
||||
systemdict /colorimage known
|
||||
{
|
||||
columns rows 8
|
||||
[
|
||||
columns 0 0
|
||||
rows neg 0 rows
|
||||
]
|
||||
{ DirectClassPacket } false 3 colorimage
|
||||
}
|
||||
{
|
||||
%
|
||||
% No colorimage operator; convert to grayscale.
|
||||
%
|
||||
columns rows 8
|
||||
[
|
||||
columns 0 0
|
||||
rows neg 0 rows
|
||||
]
|
||||
{ GrayDirectClassPacket } image
|
||||
} ifelse
|
||||
} bind def
|
||||
|
||||
/GrayDirectClassPacket
|
||||
{
|
||||
%
|
||||
% Get a DirectClass packet; convert to grayscale.
|
||||
%
|
||||
% Parameters:
|
||||
% red
|
||||
% green
|
||||
% blue
|
||||
% length: number of pixels minus one of this color (optional).
|
||||
%
|
||||
currentfile color_packet readhexstring pop pop
|
||||
color_packet 0 get 0.299 mul
|
||||
color_packet 1 get 0.587 mul add
|
||||
color_packet 2 get 0.114 mul add
|
||||
cvi
|
||||
/gray_packet exch def
|
||||
compression 0 eq
|
||||
{
|
||||
/number_pixels 1 def
|
||||
}
|
||||
{
|
||||
currentfile byte readhexstring pop 0 get
|
||||
/number_pixels exch 1 add def
|
||||
} ifelse
|
||||
0 1 number_pixels 1 sub
|
||||
{
|
||||
pixels exch gray_packet put
|
||||
} for
|
||||
pixels 0 number_pixels getinterval
|
||||
} bind def
|
||||
|
||||
/GrayPseudoClassPacket
|
||||
{
|
||||
%
|
||||
% Get a PseudoClass packet; convert to grayscale.
|
||||
%
|
||||
% Parameters:
|
||||
% index: index into the colormap.
|
||||
% length: number of pixels minus one of this color (optional).
|
||||
%
|
||||
currentfile byte readhexstring pop 0 get
|
||||
/offset exch 3 mul def
|
||||
/color_packet colormap offset 3 getinterval def
|
||||
color_packet 0 get 0.299 mul
|
||||
color_packet 1 get 0.587 mul add
|
||||
color_packet 2 get 0.114 mul add
|
||||
cvi
|
||||
/gray_packet exch def
|
||||
compression 0 eq
|
||||
{
|
||||
/number_pixels 1 def
|
||||
}
|
||||
{
|
||||
currentfile byte readhexstring pop 0 get
|
||||
/number_pixels exch 1 add def
|
||||
} ifelse
|
||||
0 1 number_pixels 1 sub
|
||||
{
|
||||
pixels exch gray_packet put
|
||||
} for
|
||||
pixels 0 number_pixels getinterval
|
||||
} bind def
|
||||
|
||||
/PseudoClassPacket
|
||||
{
|
||||
%
|
||||
% Get a PseudoClass packet.
|
||||
%
|
||||
% Parameters:
|
||||
% index: index into the colormap.
|
||||
% length: number of pixels minus one of this color (optional).
|
||||
%
|
||||
currentfile byte readhexstring pop 0 get
|
||||
/offset exch 3 mul def
|
||||
/color_packet colormap offset 3 getinterval def
|
||||
compression 0 eq
|
||||
{
|
||||
/number_pixels 3 def
|
||||
}
|
||||
{
|
||||
currentfile byte readhexstring pop 0 get
|
||||
/number_pixels exch 1 add 3 mul def
|
||||
} ifelse
|
||||
0 3 number_pixels 1 sub
|
||||
{
|
||||
pixels exch color_packet putinterval
|
||||
} for
|
||||
pixels 0 number_pixels getinterval
|
||||
} bind def
|
||||
|
||||
/PseudoClassImage
|
||||
{
|
||||
%
|
||||
% Display a PseudoClass image.
|
||||
%
|
||||
% Parameters:
|
||||
% class: 0-PseudoClass or 1-Grayscale.
|
||||
%
|
||||
currentfile buffer readline pop
|
||||
token pop /class exch def pop
|
||||
class 0 gt
|
||||
{
|
||||
currentfile buffer readline pop
|
||||
token pop /depth exch def pop
|
||||
/grays columns 8 add depth sub depth mul 8 idiv string def
|
||||
columns rows depth
|
||||
[
|
||||
columns 0 0
|
||||
rows neg 0 rows
|
||||
]
|
||||
{ currentfile grays readhexstring pop } image
|
||||
}
|
||||
{
|
||||
%
|
||||
% Parameters:
|
||||
% colors: number of colors in the colormap.
|
||||
% colormap: red, green, blue color packets.
|
||||
%
|
||||
currentfile buffer readline pop
|
||||
token pop /colors exch def pop
|
||||
/colors colors 3 mul def
|
||||
/colormap colors string def
|
||||
currentfile colormap readhexstring pop pop
|
||||
systemdict /colorimage known
|
||||
{
|
||||
columns rows 8
|
||||
[
|
||||
columns 0 0
|
||||
rows neg 0 rows
|
||||
]
|
||||
{ PseudoClassPacket } false 3 colorimage
|
||||
}
|
||||
{
|
||||
%
|
||||
% No colorimage operator; convert to grayscale.
|
||||
%
|
||||
columns rows 8
|
||||
[
|
||||
columns 0 0
|
||||
rows neg 0 rows
|
||||
]
|
||||
{ GrayPseudoClassPacket } image
|
||||
} ifelse
|
||||
} ifelse
|
||||
} bind def
|
||||
|
||||
/DisplayImage
|
||||
{
|
||||
%
|
||||
% Display a DirectClass or PseudoClass image.
|
||||
%
|
||||
% Parameters:
|
||||
% x & y translation.
|
||||
% x & y scale.
|
||||
% label pointsize.
|
||||
% image label.
|
||||
% image columns & rows.
|
||||
% class: 0-DirectClass or 1-PseudoClass.
|
||||
% compression: 0-none or 1-RunlengthEncoded.
|
||||
% hex color packets.
|
||||
%
|
||||
gsave
|
||||
/buffer 512 string def
|
||||
/byte 1 string def
|
||||
/color_packet 3 string def
|
||||
/pixels 768 string def
|
||||
|
||||
currentfile buffer readline pop
|
||||
token pop /x exch def
|
||||
token pop /y exch def pop
|
||||
x y translate
|
||||
currentfile buffer readline pop
|
||||
token pop /x exch def
|
||||
token pop /y exch def pop
|
||||
currentfile buffer readline pop
|
||||
token pop /pointsize exch def pop
|
||||
/Times-Roman findfont pointsize scalefont setfont
|
||||
x y scale
|
||||
currentfile buffer readline pop
|
||||
token pop /columns exch def
|
||||
token pop /rows exch def pop
|
||||
currentfile buffer readline pop
|
||||
token pop /class exch def pop
|
||||
currentfile buffer readline pop
|
||||
token pop /compression exch def pop
|
||||
class 0 gt { PseudoClassImage } { DirectClassImage } ifelse
|
||||
grestore
|
||||
} bind def
|
||||
%%EndProlog
|
||||
%%Page: 1 1
|
||||
%%PageBoundingBox: 0 0 25 23
|
||||
userdict begin
|
||||
DisplayImage
|
||||
0 0
|
||||
25 23
|
||||
12.000000
|
||||
25 23
|
||||
0
|
||||
0
|
||||
EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
|
||||
EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
|
||||
EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
|
||||
EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
|
||||
EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEC5BEC5B4B2B4
|
||||
B4B6B4B4B2B4B4B6B4B4B2B4B4B6B4B4B2B4B4B6B4EEEAEEEEEEEEEEEEEEEEEEEEEEEEEE
|
||||
EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE292C29
|
||||
000000000000000000000000000000000000000000000000D5D2D5EEEEEEEEEEEEEEEEEE
|
||||
EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
|
||||
626562D5D2D5D5D2D5838183000000414041D5D2D5D5D2D5737573D5D6D5EEEEEEEEEEEE
|
||||
EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
|
||||
EEEEEEEEEEEEEEEEEEEEEEEE9495940000004A484AEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
|
||||
EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
|
||||
EEEEEEEEEEEEEEEEEEEEEEEEF6F2F69C9D9C0000004A484AEEEEEEEEEEEEEEEEEEEEEEEE
|
||||
EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
|
||||
EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEF6F2F6A4A1A40000004A484AEEEEEEEEEEEEEEEEEE
|
||||
EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
|
||||
EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE9C999C0000004A484AEEEEEEEEEEEE
|
||||
EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
|
||||
EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEAEE6A656A000000292C29CDCECD
|
||||
EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
|
||||
EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE6E6E6005900005D00005900
|
||||
2989294AA54A4AA54A4AA54A4AA54A4AA54A4AA54A4AA14A8BAA8BF6F2F6EEEEEEEEEEEE
|
||||
EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEECDE2CD299529209100CDE200
|
||||
F6EA00DEAE00FFFF00FFFF00FFF200DEAE00FFF200DEEE003189008BA58BEEEEEEEEEEEE
|
||||
EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE73BA733199317BBE00C5E200
|
||||
FFFF00DEB2008B0000FFF200FFFF00EED2008B0000D5C600398D00739D73EEEEEEEEEEEE
|
||||
EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE6EAE662AE6231990094CA00FFFF00
|
||||
FFEA00E6BE00FFFF00FFEE00FFFF00FFFF00FFFF00DEDE0031890083A183EEEEEEEEEEEE
|
||||
EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEA4CEA452AA524AA500EEE600BD7100
|
||||
F6DE00D5A1008B0000FFFF00FFFF00FFFF00FFFF00E6F200398D007BA17BEEEEEEEEEEEE
|
||||
EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEF6F2F6DEEADE9CCA9C299508CDE600F6FA00F6E600
|
||||
9C3000E6CA00FFF600F6DE00FFFF00FFFF009C3000B49100318D087BA17BEEEAEEEEEEEE
|
||||
EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEF6F6F662B2620085004AA50083C20083C200
|
||||
83C20083C20083C20083C20083C20083C20083C2004A48002055007BA17BEEEEEEEEEEEE
|
||||
EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEF6F2F6739973186118186518186118
|
||||
186518186118186518186118186518186118186518186118186518185918D5DED5EEEEEE
|
||||
EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
|
||||
EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
|
||||
EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
|
||||
EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
|
||||
EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
|
||||
EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
|
||||
EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
|
||||
EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
|
||||
EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
|
||||
EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
|
||||
EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
|
||||
end
|
||||
%%PageTrailer
|
||||
%%Trailer
|
||||
%%EOF
|
20900
doc/source/user_guide/qgis_user_guide_images/plugins_gps/download.eps
Normal file
@ -0,0 +1,104 @@
|
||||
%!PS-Adobe-3.0 EPSF-3.0
|
||||
%%Creator: GIMP PostScript file plugin V 1.17 by Peter Kirchgessner
|
||||
%%Title: icon.eps
|
||||
%%CreationDate: Mon Dec 20 00:26:27 2004
|
||||
%%DocumentData: Clean7Bit
|
||||
%%LanguageLevel: 2
|
||||
%%Pages: 1
|
||||
%%BoundingBox: 14 14 37 37
|
||||
%%EndComments
|
||||
%%BeginProlog
|
||||
% Use own dictionary to avoid conflicts
|
||||
10 dict begin
|
||||
%%EndProlog
|
||||
%%Page: 1 1
|
||||
% Translate for offset
|
||||
14.173228346456694 14.173228346456694 translate
|
||||
% Translate to begin of first scanline
|
||||
0 21.99685039370079 translate
|
||||
21.99685039370079 -21.99685039370079 scale
|
||||
% Image geometry
|
||||
22 22 8
|
||||
% Transformation matrix
|
||||
[ 22 0 0 22 0 0 ]
|
||||
% Strings to hold RGB-samples per scanline
|
||||
/rstr 22 string def
|
||||
/gstr 22 string def
|
||||
/bstr 22 string def
|
||||
{currentfile /ASCII85Decode filter /RunLengthDecode filter rstr readstring pop}
|
||||
{currentfile /ASCII85Decode filter /RunLengthDecode filter gstr readstring pop}
|
||||
{currentfile /ASCII85Decode filter /RunLengthDecode filter bstr readstring pop}
|
||||
true 3
|
||||
%%BeginData: 1400 ASCII Bytes
|
||||
colorimage
|
||||
q#:K^io]Rrq>Ys~>
|
||||
q#:K^j6,atq>Ys~>
|
||||
q#:K]i8j.kq>Ys~>
|
||||
qYpiTK>5siiq2a5qu;0~>
|
||||
qYpiUKu)EsjS/3;qu;0~>
|
||||
qYpiUJ%*bSi:HF/qu;0~>
|
||||
qYphVNOm&nMVmpiqu;0~>
|
||||
qYphZO1`K!N8jEqqu;0~>
|
||||
qYphZL9\FTM;7Rbqu;0~>
|
||||
qYph>Kr1l,A\m3Yqu;0~>
|
||||
qYphBL8Lu.B>`Waqu;0~>
|
||||
qYphCI@R!aA\HdMqu;0~>
|
||||
qYph?F,63;?)bZWqu;0~>
|
||||
qYphDFGQ9;?E1l[qu;0~>
|
||||
qYphDCjq@l=e`O@qu;0~>
|
||||
qYphC@<-pXNgl]5qu;0~>
|
||||
qYphH@rm6]OIW#:qu;0~>
|
||||
qYphH>ASY@M3aQqqu;0~>
|
||||
qYphJC4U>"ATa0+qu;0~>
|
||||
qYphND1lt.BR,i5qu;0~>
|
||||
qYphOB74Yp@s*fuqu;0~>
|
||||
qYphKBkg@G8lokqqu;0~>
|
||||
qYphOChupQ:0MV'qu;0~>
|
||||
qYphOB4b"E:KVLsqu;0~>
|
||||
qYphNBM_M]3C?f7qu;0~>
|
||||
qYphQC/RP]5Y,%Iqu;0~>
|
||||
qYphSAPPfY6q:CFqu;0~>
|
||||
qYphQB37hq;,CYdqu;0~>
|
||||
qYphTBj4G)=&`^tqu;0~>
|
||||
qYphV@ocGr=Ai[mqu;0~>
|
||||
qYphUB4k=eG\qhhqu;0~>
|
||||
qYphYBkggnHZ4Isqu;0~>
|
||||
qYph[@q8YZG&)D_qu;0~>
|
||||
qYphZC3+*#?sR9%qu;0~>
|
||||
qYph^CisW5CL^q:qu;0~>
|
||||
qYph_AoM^1F)>KFqu;0~>
|
||||
qYphHC2]E"H%fdhqu;0~>
|
||||
qYphKD0DbMO,dq9qu;0~>
|
||||
qYphLAp1VmW1\!bqu;0~>
|
||||
qYphFC3?;Yb0,$mqu;0~>
|
||||
qYphHD0i+icd$p&qu;0~>
|
||||
qYphJApC;de'NK&qu;0~>
|
||||
qYphGD/e:lj5bNMqu;0~>
|
||||
qYphJDK4FlioGENqu;0~>
|
||||
qYphKBPlG^i8JpBqu;0~>
|
||||
qYphIE-ocSR#bgCqu;0~>
|
||||
qYphKEdcH@[C'n=qu;0~>
|
||||
qYphLCO*m0Mgf)squ;0~>
|
||||
qYphJFDu80ARec-qu;0~>
|
||||
qYphMG'^?pWiKm'qu;0~>
|
||||
qYphMDe`HD8OlL>qu;0~>
|
||||
qZ$SB#'"Tk?t!31qu;0~>
|
||||
qYphMI=A,tWMjU*qu;0~>
|
||||
qYphNGA:AM786aNqu;0~>
|
||||
qYphJKSQD0Vj2M*qu;0~>
|
||||
qYphNKoE+HYa^'?qu;0~>
|
||||
qYphNJ;UJD[@VfBqu;0~>
|
||||
qYphVO.DMpN2`haqu;0~>
|
||||
qYphYO._u(O/o=gqu;0~>
|
||||
qZ$SP#+V0EN2EJVqu;0~>
|
||||
qYpfFLPq.DMjC18s*t~>
|
||||
qYpfFL5V(EN0U17s*t~>
|
||||
qYpfFJqf)1LlnA,s*t~>
|
||||
li2J~>
|
||||
li2J~>
|
||||
li2J~>
|
||||
%%EndData
|
||||
showpage
|
||||
%%Trailer
|
||||
end
|
||||
%%EOF
|
@ -0,0 +1,205 @@
|
||||
/* XPM */
|
||||
static const char *icon[]={
|
||||
"22 22 180 2",
|
||||
"Qt c None",
|
||||
"#g c #33383b",
|
||||
"#h c #394044",
|
||||
"#i c #434847",
|
||||
"#p c #444746",
|
||||
"#. c #4a4e4f",
|
||||
"#o c #4c5151",
|
||||
".8 c #4d5051",
|
||||
".0 c #4f5251",
|
||||
"#f c #504749",
|
||||
"#e c #50524e",
|
||||
"#r c #505452",
|
||||
"#q c #515758",
|
||||
"#j c #555959",
|
||||
"an c #566a4d",
|
||||
"## c #575a58",
|
||||
"#w c #585a57",
|
||||
"#n c #585b56",
|
||||
"aw c #596b54",
|
||||
".9 c #5a5c5a",
|
||||
".J c #5d5e59",
|
||||
"#H c #5d636d",
|
||||
"#s c #606464",
|
||||
"#G c #606b73",
|
||||
"au c #60a945",
|
||||
".O c #61635b",
|
||||
"av c #61a84d",
|
||||
"at c #62ae43",
|
||||
"ak c #62ae44",
|
||||
"#I c #636565",
|
||||
"am c #63ab47",
|
||||
"#R c #64696d",
|
||||
".B c #656765",
|
||||
".1 c #656863",
|
||||
"ae c #656e61",
|
||||
"#F c #656e73",
|
||||
"al c #65aa49",
|
||||
"#m c #676963",
|
||||
"#v c #676a64",
|
||||
"#d c #686a65",
|
||||
".6 c #696c67",
|
||||
"#E c #696e70",
|
||||
".7 c #6a6c66",
|
||||
"#L c #6a6d66",
|
||||
".X c #6a6d67",
|
||||
"#1 c #6d6e68",
|
||||
"#z c #6d706b",
|
||||
"#a c #6d706e",
|
||||
".w c #6f7374",
|
||||
"#M c #6f7676",
|
||||
"#2 c #70716d",
|
||||
"a. c #70726b",
|
||||
".Z c #70736e",
|
||||
".E c #707575",
|
||||
"ai c #707a6a",
|
||||
"as c #70a85c",
|
||||
"ar c #717e6a",
|
||||
".P c #72736c",
|
||||
"#x c #72746f",
|
||||
"aj c #72af5a",
|
||||
".F c #73746c",
|
||||
"#D c #737570",
|
||||
"ah c #74766f",
|
||||
".N c #747979",
|
||||
".2 c #757975",
|
||||
"#U c #757a78",
|
||||
"#T c #77797b",
|
||||
"#y c #787b76",
|
||||
"#0 c #787b7c",
|
||||
"#Z c #787c7c",
|
||||
"aF c #787d7d",
|
||||
"#K c #797c7d",
|
||||
"#P c #798fa8",
|
||||
"#7 c #7a7a78",
|
||||
"#9 c #7a7c7d",
|
||||
"ab c #7aaf64",
|
||||
"aq c #7b7d77",
|
||||
"a# c #7b7d79",
|
||||
"ag c #7b7e7e",
|
||||
"ap c #7b7e7f",
|
||||
"ay c #7b7f7f",
|
||||
".W c #7b7f80",
|
||||
"#A c #7c7f7a",
|
||||
".5 c #7c8080",
|
||||
"#c c #7f8284",
|
||||
".Q c #81827b",
|
||||
".Y c #81847d",
|
||||
"aU c #82837e",
|
||||
"#l c #828587",
|
||||
".f c #83857f",
|
||||
"az c #848580",
|
||||
".I c #85857d",
|
||||
".x c #85867d",
|
||||
"#Q c #858ea0",
|
||||
"#u c #868a8c",
|
||||
"aR c #878682",
|
||||
"aH c #878a89",
|
||||
".n c #878b8b",
|
||||
"aA c #878c8a",
|
||||
".G c #88887e",
|
||||
".A c #898a84",
|
||||
".s c #8a8c89",
|
||||
"aS c #8b8b86",
|
||||
"aV c #8b8c88",
|
||||
"#C c #8b8f90",
|
||||
".R c #8c8d86",
|
||||
"aM c #8c8f8c",
|
||||
"aT c #8d8e88",
|
||||
".o c #8d8f86",
|
||||
"#J c #8d8f89",
|
||||
"aL c #8d9090",
|
||||
".S c #8e9089",
|
||||
"#S c #8e908a",
|
||||
"aI c #8f8f89",
|
||||
"#B c #8f918c",
|
||||
"ad c #8fb57e",
|
||||
"#O c #90a2b8",
|
||||
".3 c #92948e",
|
||||
"#8 c #939590",
|
||||
"af c #949791",
|
||||
"aK c #949b9b",
|
||||
".r c #959792",
|
||||
"aE c #959b9e",
|
||||
"aW c #969591",
|
||||
"#b c #969791",
|
||||
"#t c #969892",
|
||||
"#N c #96a5b6",
|
||||
"ao c #979a94",
|
||||
".H c #98978d",
|
||||
"ac c #98b58b",
|
||||
"#k c #999b95",
|
||||
".T c #9b9c96",
|
||||
".4 c #9c9d97",
|
||||
"aJ c #9da09c",
|
||||
".V c #9e9f96",
|
||||
"ax c #9fa09b",
|
||||
".U c #a0a199",
|
||||
"#V c #a3a7a9",
|
||||
"aX c #a4a3a0",
|
||||
"aB c #a5acad",
|
||||
".y c #a6a69c",
|
||||
"aD c #a7b0b5",
|
||||
"aG c #a8a9a4",
|
||||
".K c #a9aaa2",
|
||||
"aN c #a9aba6",
|
||||
".z c #aaaaa1",
|
||||
"aO c #aaaba6",
|
||||
"aC c #b2bdbf",
|
||||
"aP c #b4b4b0",
|
||||
"#W c #b4b8ba",
|
||||
".p c #babcb1",
|
||||
".g c #bfc1b7",
|
||||
".L c #c1c2bb",
|
||||
".C c #c1c3bd",
|
||||
".M c #c2c3bc",
|
||||
".q c #c4c6bd",
|
||||
"#X c #cacfd3",
|
||||
"#Y c #cbced0",
|
||||
"aa c #cbd4c5",
|
||||
"aQ c #cdcdcd",
|
||||
".h c #d5d8cf",
|
||||
".i c #d9dcd5",
|
||||
".e c #dadbdb",
|
||||
"#3 c #dcdbd9",
|
||||
".D c #dddfd9",
|
||||
".t c #dfe2dc",
|
||||
".a c #e2e3e0",
|
||||
".j c #e2e4e0",
|
||||
"#5 c #e3e2e0",
|
||||
"#6 c #e4e4e1",
|
||||
"#4 c #e5e4e2",
|
||||
".b c #e6e7e4",
|
||||
".# c #eaeae9",
|
||||
".c c #ebebe9",
|
||||
".v c #ecedea",
|
||||
".d c #f0f0ef",
|
||||
".l c #f0f1ef",
|
||||
".u c #f0f2ef",
|
||||
".k c #f4f7f3",
|
||||
".m c #f5f5f3",
|
||||
"QtQtQtQtQtQtQtQtQt.#.a.b.c.dQtQtQtQtQtQtQtQt",
|
||||
"QtQtQtQtQtQtQt.e.f.g.h.i.j.k.l.mQtQtQtQtQtQt",
|
||||
"QtQtQtQtQtQtQt.n.o.p.q.r.s.t.u.vQtQtQtQtQtQt",
|
||||
"QtQtQtQtQtQtQt.w.x.y.z.A.B.C.D.DQtQtQtQtQtQt",
|
||||
"QtQtQtQtQtQtQt.E.F.G.H.I.J.K.L.MQtQtQtQtQtQt",
|
||||
"QtQtQtQtQtQtQt.N.O.P.Q.R.S.T.U.VQtQtQtQtQtQt",
|
||||
"QtQtQtQtQtQtQt.W.X.Y.Z.0.1.2.3.4QtQtQtQtQtQt",
|
||||
"QtQtQtQtQtQtQt.5.6.7.8.9#.###a#bQtQtQtQtQtQt",
|
||||
"QtQtQtQtQtQtQt#c#d#e#f#g#h#i#j#kQtQtQtQtQtQt",
|
||||
"QtQtQtQtQtQtQt#l#m#n#o#p#q#r#s#tQtQtQtQtQtQt",
|
||||
"QtQtQtQtQtQtQt#u#m#v#w#x#y#z#A#BQtQtQtQtQtQt",
|
||||
"QtQtQtQtQtQtQt#C.7#D#E#F#G#H#I#JQtQtQtQtQtQt",
|
||||
"QtQtQtQtQtQtQt#K#L#M#N#O#P#Q#R#SQtQtQtQtQtQt",
|
||||
"QtQtQtQtQtQtQt#T#L#U#V#W#X#Y#Z.3QtQtQtQtQtQt",
|
||||
"QtQtQtQtQtQtQt#0#1#2#3#4#5#6#7#8QtQtQtQtQtQt",
|
||||
"QtQtQtQtQtQtQt#9a.a#aaabacadaeafQtQtQtQtQtQt",
|
||||
"QtQtQtQtQtQtQtagahaiajakalamanaoQtQtQtQtQtQt",
|
||||
"QtQtQtQtQtQtQtapaqarasatauavawaxQtQtQtQtQtQt",
|
||||
"QtQtQtQtQtQtQtayazaAaBaCaDaEaFaGQtQtQtQtQtQt",
|
||||
"QtQtQtQtQtQtQtaHaIaJaKaLaMaNaOaPQtQtQtQtQtQt",
|
||||
"QtQtQtQtQtQtQtaQaRaSaTaUaVaWaXQtQtQtQtQtQtQt",
|
||||
"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt"};
|
20900
doc/source/user_guide/qgis_user_guide_images/plugins_gps/loadgpx.eps
Normal file
BIN
doc/source/user_guide/qgis_user_guide_images/pyramid.png
Normal file
After Width: | Height: | Size: 677 B |
BIN
doc/source/user_guide/qgis_user_guide_images/qgis-icon-16x16.png
Normal file
After Width: | Height: | Size: 742 B |
After Width: | Height: | Size: 52 KiB |
18691
doc/source/user_guide/qgis_user_guide_images/querybuilder.eps
Normal file
BIN
doc/source/user_guide/qgis_user_guide_images/querybuilder.png
Normal file
After Width: | Height: | Size: 30 KiB |
Before Width: | Height: | Size: 29 KiB After Width: | Height: | Size: 64 KiB |
Before Width: | Height: | Size: 24 KiB After Width: | Height: | Size: 358 KiB |
After Width: | Height: | Size: 33 KiB |
764
doc/source/user_guide/timthesis.cls
Normal file
@ -0,0 +1,764 @@
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
%%
|
||||
%% This is a customised version of the report
|
||||
%% style for my thesis. Tim Sutton 2003.
|
||||
%%
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
|
||||
%% This is file `timthesis.cls',
|
||||
%% generated with the docstrip utility.
|
||||
%%
|
||||
%% The original source files were:
|
||||
%%
|
||||
%% classes.dtx (with options: `timthesis')
|
||||
%%
|
||||
%% This is a generated file.
|
||||
%%
|
||||
%% Copyright 1993 1994 1995 1996 1997 1998 1999 2000 2001
|
||||
%% The LaTeX3 Project and any individual authors listed elsewhere
|
||||
%% in this file.
|
||||
%%
|
||||
%% This file was generated from file(s) of the LaTeX base system.
|
||||
%% --------------------------------------------------------------
|
||||
%%
|
||||
%% It may be distributed and/or modified under the
|
||||
%% conditions of the LaTeX Project Public License, either version 1.2
|
||||
%% of this license or (at your option) any later version.
|
||||
%% The latest version of this license is in
|
||||
%% http://www.latex-project.org/lppl.txt
|
||||
%% and version 1.2 or later is part of all distributions of LaTeX
|
||||
%% version 1999/12/01 or later.
|
||||
%%
|
||||
%% This file may only be distributed together with a copy of the LaTeX
|
||||
%% base system. You may however distribute the LaTeX base system without
|
||||
%% such generated files.
|
||||
%%
|
||||
%% The list of all files belonging to the LaTeX base distribution is
|
||||
%% given in the file `manifest.txt'. See also `legal.txt' for additional
|
||||
%% information.
|
||||
%%
|
||||
%% \CharacterTable
|
||||
%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
|
||||
%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
|
||||
%% Digits \0\1\2\3\4\5\6\7\8\9
|
||||
%% Exclamation \! Double quote \" Hash (number) \#
|
||||
%% Dollar \$ Percent \% Ampersand \&
|
||||
%% Acute accent \' Left paren \( Right paren \)
|
||||
%% Asterisk \* Plus \+ Comma \,
|
||||
%% Minus \- Point \. Solidus \/
|
||||
%% Colon \: Semicolon \; Less than \<
|
||||
%% Equals \= Greater than \> Question mark \?
|
||||
%% Commercial at \@ Left bracket \[ Backslash \\
|
||||
%% Right bracket \] Circumflex \^ Underscore \_
|
||||
%% Grave accent \` Left brace \{ Vertical bar \|
|
||||
%% Right brace \} Tilde \~}
|
||||
\NeedsTeXFormat{LaTeX2e}[1995/12/01]
|
||||
\ProvidesClass{timthesis}
|
||||
[2001/04/21 v1.4e
|
||||
Standard LaTeX document class]
|
||||
\newcommand\@ptsize{}
|
||||
\newif\if@restonecol
|
||||
\newif\if@titlepage
|
||||
\@titlepagetrue
|
||||
\newif\if@openright
|
||||
\if@compatibility\else
|
||||
\DeclareOption{a4paper}
|
||||
{\setlength\paperheight {297mm}%
|
||||
\setlength\paperwidth {210mm}}
|
||||
\DeclareOption{a5paper}
|
||||
{\setlength\paperheight {210mm}%
|
||||
\setlength\paperwidth {148mm}}
|
||||
\DeclareOption{b5paper}
|
||||
{\setlength\paperheight {250mm}%
|
||||
\setlength\paperwidth {176mm}}
|
||||
\DeclareOption{letterpaper}
|
||||
{\setlength\paperheight {11in}%
|
||||
\setlength\paperwidth {8.5in}}
|
||||
\DeclareOption{legalpaper}
|
||||
{\setlength\paperheight {14in}%
|
||||
\setlength\paperwidth {8.5in}}
|
||||
\DeclareOption{executivepaper}
|
||||
{\setlength\paperheight {10.5in}%
|
||||
\setlength\paperwidth {7.25in}}
|
||||
\DeclareOption{landscape}
|
||||
{\setlength\@tempdima {\paperheight}%
|
||||
\setlength\paperheight {\paperwidth}%
|
||||
\setlength\paperwidth {\@tempdima}}
|
||||
\fi
|
||||
\if@compatibility
|
||||
\renewcommand\@ptsize{0}
|
||||
\else
|
||||
\DeclareOption{10pt}{\renewcommand\@ptsize{0}}
|
||||
\fi
|
||||
\DeclareOption{11pt}{\renewcommand\@ptsize{1}}
|
||||
\DeclareOption{12pt}{\renewcommand\@ptsize{2}}
|
||||
\if@compatibility\else
|
||||
\DeclareOption{oneside}{\@twosidefalse \@mparswitchfalse}
|
||||
\fi
|
||||
\DeclareOption{twoside}{\@twosidetrue \@mparswitchtrue}
|
||||
\DeclareOption{draft}{\setlength\overfullrule{5pt}}
|
||||
\if@compatibility\else
|
||||
\DeclareOption{final}{\setlength\overfullrule{0pt}}
|
||||
\fi
|
||||
\DeclareOption{titlepage}{\@titlepagetrue}
|
||||
\if@compatibility\else
|
||||
\DeclareOption{notitlepage}{\@titlepagefalse}
|
||||
\fi
|
||||
\if@compatibility
|
||||
\else
|
||||
\DeclareOption{openright}{\@openrighttrue}
|
||||
\DeclareOption{openany}{\@openrightfalse}
|
||||
\fi
|
||||
\if@compatibility\else
|
||||
\DeclareOption{onecolumn}{\@twocolumnfalse}
|
||||
\fi
|
||||
\DeclareOption{twocolumn}{\@twocolumntrue}
|
||||
\DeclareOption{leqno}{\input{leqno.clo}}
|
||||
\DeclareOption{fleqn}{\input{fleqn.clo}}
|
||||
\DeclareOption{openbib}{%
|
||||
\AtEndOfPackage{%
|
||||
\renewcommand\@openbib@code{%
|
||||
\advance\leftmargin\bibindent
|
||||
\itemindent -\bibindent
|
||||
\listparindent \itemindent
|
||||
\parsep \z@
|
||||
}%
|
||||
\renewcommand\newblock{\par}}%
|
||||
}
|
||||
\ExecuteOptions{letterpaper,10pt,oneside,onecolumn,final,openany}
|
||||
\ProcessOptions
|
||||
\input{size1\@ptsize.clo}
|
||||
\setlength\lineskip{1\p@}
|
||||
\setlength\normallineskip{1\p@}
|
||||
\renewcommand\baselinestretch{}
|
||||
\setlength\parskip{0\p@ \@plus \p@}
|
||||
\@lowpenalty 51
|
||||
\@medpenalty 151
|
||||
\@highpenalty 301
|
||||
\setcounter{topnumber}{2}
|
||||
\renewcommand\topfraction{.7}
|
||||
\setcounter{bottomnumber}{1}
|
||||
\renewcommand\bottomfraction{.3}
|
||||
\setcounter{totalnumber}{3}
|
||||
\renewcommand\textfraction{.2}
|
||||
\renewcommand\floatpagefraction{.5}
|
||||
\setcounter{dbltopnumber}{2}
|
||||
\renewcommand\dbltopfraction{.7}
|
||||
\renewcommand\dblfloatpagefraction{.5}
|
||||
\if@twoside
|
||||
\def\ps@headings{%
|
||||
\let\@oddfoot\@empty\let\@evenfoot\@empty
|
||||
\def\@evenhead{\thepage\hfil\slshape\leftmark}%
|
||||
\def\@oddhead{{\slshape\rightmark}\hfil\thepage}%
|
||||
\let\@mkboth\markboth
|
||||
\def\chaptermark##1{%
|
||||
\markboth {\MakeUppercase{%
|
||||
\ifnum \c@secnumdepth >\m@ne
|
||||
\@chapapp\ \thechapter. \ %
|
||||
\fi
|
||||
##1}}{}}%
|
||||
\def\sectionmark##1{%
|
||||
\markright {\MakeUppercase{%
|
||||
\ifnum \c@secnumdepth >\z@
|
||||
\thesection. \ %
|
||||
\fi
|
||||
##1}}}}
|
||||
\else
|
||||
\def\ps@headings{%
|
||||
\let\@oddfoot\@empty
|
||||
\def\@oddhead{{\slshape\rightmark}\hfil\thepage}%
|
||||
\let\@mkboth\markboth
|
||||
\def\chaptermark##1{%
|
||||
\markright {\MakeUppercase{%
|
||||
\ifnum \c@secnumdepth >\m@ne
|
||||
\@chapapp\ \thechapter. \ %
|
||||
\fi
|
||||
##1}}}}
|
||||
\fi
|
||||
\def\ps@myheadings{%
|
||||
\let\@oddfoot\@empty\let\@evenfoot\@empty
|
||||
\def\@evenhead{\thepage\hfil\slshape\leftmark}%
|
||||
\def\@oddhead{{\slshape\rightmark}\hfil\thepage}%
|
||||
\let\@mkboth\@gobbletwo
|
||||
\let\chaptermark\@gobble
|
||||
\let\sectionmark\@gobble
|
||||
}
|
||||
\if@titlepage
|
||||
\newcommand\maketitle{\begin{titlepage}%
|
||||
\let\footnotesize\small
|
||||
\let\footnoterule\relax
|
||||
\let \footnote \thanks
|
||||
\null\vfil
|
||||
\vskip 60\p@
|
||||
\begin{center}%
|
||||
{\LARGE \@title \par}%
|
||||
\vskip 3em%
|
||||
{\large
|
||||
\lineskip .75em%
|
||||
\begin{tabular}[t]{c}%
|
||||
\@author
|
||||
\end{tabular}\par}%
|
||||
\vskip 1.5em%
|
||||
{\large \@date \par}% % Set date in \large size.
|
||||
\end{center}\par
|
||||
\@thanks
|
||||
\vfil\null
|
||||
\end{titlepage}%
|
||||
\setcounter{footnote}{0}%
|
||||
\global\let\thanks\relax
|
||||
\global\let\maketitle\relax
|
||||
\global\let\@thanks\@empty
|
||||
\global\let\@author\@empty
|
||||
\global\let\@date\@empty
|
||||
\global\let\@title\@empty
|
||||
\global\let\title\relax
|
||||
\global\let\author\relax
|
||||
\global\let\date\relax
|
||||
\global\let\and\relax
|
||||
}
|
||||
\else
|
||||
\newcommand\maketitle{\par
|
||||
\begingroup
|
||||
\renewcommand\thefootnote{\@fnsymbol\c@footnote}%
|
||||
\def\@makefnmark{\rlap{\@textsuperscript{\normalfont\@thefnmark}}}%
|
||||
\long\def\@makefntext##1{\parindent 1em\noindent
|
||||
\hb@xt@1.8em{%
|
||||
\hss\@textsuperscript{\normalfont\@thefnmark}}##1}%
|
||||
\if@twocolumn
|
||||
\ifnum \col@number=\@ne
|
||||
\@maketitle
|
||||
\else
|
||||
\twocolumn[\@maketitle]%
|
||||
\fi
|
||||
\else
|
||||
\newpage
|
||||
\global\@topnum\z@ % Prevents figures from going at top of page.
|
||||
\@maketitle
|
||||
\fi
|
||||
\thispagestyle{plain}\@thanks
|
||||
\endgroup
|
||||
\setcounter{footnote}{0}%
|
||||
\global\let\thanks\relax
|
||||
\global\let\maketitle\relax
|
||||
\global\let\@maketitle\relax
|
||||
\global\let\@thanks\@empty
|
||||
\global\let\@author\@empty
|
||||
\global\let\@date\@empty
|
||||
\global\let\@title\@empty
|
||||
\global\let\title\relax
|
||||
\global\let\author\relax
|
||||
\global\let\date\relax
|
||||
\global\let\and\relax
|
||||
}
|
||||
\def\@maketitle{%
|
||||
\newpage
|
||||
\null
|
||||
\vskip 2em%
|
||||
\begin{center}%
|
||||
\let \footnote \thanks
|
||||
{\LARGE \@title \par}%
|
||||
\vskip 1.5em%
|
||||
{\large
|
||||
\lineskip .5em%
|
||||
\begin{tabular}[t]{c}%
|
||||
\@author
|
||||
\end{tabular}\par}%
|
||||
\vskip 1em%
|
||||
{\large \@date}%
|
||||
\end{center}%
|
||||
\par
|
||||
\vskip 1.5em}
|
||||
\fi
|
||||
\newcommand*\chaptermark[1]{}
|
||||
\setcounter{secnumdepth}{2}
|
||||
\newcounter {part}
|
||||
\newcounter {chapter}
|
||||
\newcounter {section}[chapter]
|
||||
\newcounter {subsection}[section]
|
||||
\newcounter {subsubsection}[subsection]
|
||||
\newcounter {paragraph}[subsubsection]
|
||||
\newcounter {subparagraph}[paragraph]
|
||||
\renewcommand \thepart {\@Roman\c@part}
|
||||
\renewcommand \thechapter {\@arabic\c@chapter}
|
||||
\renewcommand \thesection {\thechapter.\@arabic\c@section}
|
||||
\renewcommand\thesubsection {\thesection.\@arabic\c@subsection}
|
||||
\renewcommand\thesubsubsection{\thesubsection .\@arabic\c@subsubsection}
|
||||
\renewcommand\theparagraph {\thesubsubsection.\@arabic\c@paragraph}
|
||||
\renewcommand\thesubparagraph {\theparagraph.\@arabic\c@subparagraph}
|
||||
\newcommand\@chapapp{\chaptername}
|
||||
\newcommand\part{%
|
||||
\if@openright
|
||||
\cleardoublepage
|
||||
\else
|
||||
\clearpage
|
||||
\fi
|
||||
\thispagestyle{plain}%
|
||||
\if@twocolumn
|
||||
\onecolumn
|
||||
\@tempswatrue
|
||||
\else
|
||||
\@tempswafalse
|
||||
\fi
|
||||
\null\vfil
|
||||
\secdef\@part\@spart}
|
||||
|
||||
\def\@part[#1]#2{%
|
||||
\ifnum \c@secnumdepth >-2\relax
|
||||
\refstepcounter{part}%
|
||||
\addcontentsline{toc}{part}{\thepart\hspace{1em}#1}%
|
||||
\else
|
||||
\addcontentsline{toc}{part}{#1}%
|
||||
\fi
|
||||
\markboth{}{}%
|
||||
{\centering
|
||||
\interlinepenalty \@M
|
||||
\normalfont
|
||||
\ifnum \c@secnumdepth >-2\relax
|
||||
\huge\bfseries \partname\nobreakspace\thepart
|
||||
\par
|
||||
\vskip 20\p@
|
||||
\fi
|
||||
\Huge \bfseries #2\par}%
|
||||
\@endpart}
|
||||
\def\@spart#1{%
|
||||
{\centering
|
||||
\interlinepenalty \@M
|
||||
\normalfont
|
||||
\Huge \bfseries #1\par}%
|
||||
\@endpart}
|
||||
\def\@endpart{\vfil\newpage
|
||||
\if@twoside
|
||||
\if@openright
|
||||
\null
|
||||
\thispagestyle{empty}%
|
||||
\newpage
|
||||
\fi
|
||||
\fi
|
||||
\if@tempswa
|
||||
\twocolumn
|
||||
\fi}
|
||||
\newcommand\chapter{\if@openright\cleardoublepage\else\clearpage\fi
|
||||
\thispagestyle{plain}%
|
||||
\global\@topnum\z@
|
||||
\@afterindentfalse
|
||||
\secdef\@chapter\@schapter}
|
||||
\def\@chapter[#1]#2{\ifnum \c@secnumdepth >\m@ne
|
||||
\refstepcounter{chapter}%
|
||||
\typeout{\@chapapp\space\thechapter.}%
|
||||
\addcontentsline{toc}{chapter}%
|
||||
{\protect\numberline{\thechapter}#1}%
|
||||
\else
|
||||
\addcontentsline{toc}{chapter}{#1}%
|
||||
\fi
|
||||
\chaptermark{#1}%
|
||||
\addtocontents{lof}{\protect\addvspace{10\p@}}%
|
||||
\addtocontents{lot}{\protect\addvspace{10\p@}}%
|
||||
\if@twocolumn
|
||||
\@topnewpage[\@makechapterhead{#2}]%
|
||||
\else
|
||||
\@makechapterhead{#2}%
|
||||
\@afterheading
|
||||
\fi}
|
||||
\def\@makechapterhead#1{%
|
||||
\vspace*{2\p@}%
|
||||
{\parindent \z@ \raggedright \normalfont
|
||||
% Added centering, changed font to Large (14pt) and stripped out newline
|
||||
% beween chapter label and chapter name and use a colon : rather
|
||||
\begin{center}
|
||||
\ifnum \c@secnumdepth >\m@ne
|
||||
\Large\bfseries \@chapapp\space \thechapter
|
||||
: \p@
|
||||
\fi
|
||||
\interlinepenalty\@M
|
||||
\Large \bfseries #1\par\nobreak
|
||||
\vskip 40\p@
|
||||
\end{center}
|
||||
% end of changes by Tim
|
||||
}}
|
||||
\def\@schapter#1{\if@twocolumn
|
||||
\@topnewpage[\@makeschapterhead{#1}]%
|
||||
\else
|
||||
\@makeschapterhead{#1}%
|
||||
\@afterheading
|
||||
\fi}
|
||||
\def\@makeschapterhead#1{%
|
||||
\vspace*{2\p@}%
|
||||
{\parindent \z@ \raggedright
|
||||
\normalfont
|
||||
\interlinepenalty\@M
|
||||
\Huge \bfseries #1\par\nobreak
|
||||
\vskip 40\p@
|
||||
}}
|
||||
\newcommand\section{\@startsection {section}{1}{\z@}%
|
||||
{-3.5ex \@plus -1ex \@minus -.2ex}%
|
||||
{2.3ex \@plus.2ex}%
|
||||
{\normalfont\large\bfseries}}
|
||||
\newcommand\subsection{\@startsection{subsection}{2}{\z@}%
|
||||
{-3.25ex\@plus -1ex \@minus -.2ex}%
|
||||
{1.5ex \@plus .2ex}%
|
||||
{\normalfont\large\bfseries}}
|
||||
\newcommand\subsubsection{\@startsection{subsubsection}{3}{\z@}%
|
||||
{-3.25ex\@plus -1ex \@minus -.2ex}%
|
||||
{1.5ex \@plus .2ex}%
|
||||
{\normalfont\large\bfseries}}
|
||||
\newcommand\paragraph{\@startsection{paragraph}{4}{\z@}%
|
||||
{3.25ex \@plus1ex \@minus.2ex}%
|
||||
{-1em}%
|
||||
{\normalfont\normalsize\bfseries}}
|
||||
\newcommand\subparagraph{\@startsection{subparagraph}{5}{\parindent}%
|
||||
{3.25ex \@plus1ex \@minus .2ex}%
|
||||
{-1em}%
|
||||
{\normalfont\normalsize\bfseries}}
|
||||
\if@twocolumn
|
||||
\setlength\leftmargini {2em}
|
||||
\else
|
||||
\setlength\leftmargini {2.5em}
|
||||
\fi
|
||||
\leftmargin \leftmargini
|
||||
\setlength\leftmarginii {2.2em}
|
||||
\setlength\leftmarginiii {1.87em}
|
||||
\setlength\leftmarginiv {1.7em}
|
||||
\if@twocolumn
|
||||
\setlength\leftmarginv {.5em}
|
||||
\setlength\leftmarginvi {.5em}
|
||||
\else
|
||||
\setlength\leftmarginv {1em}
|
||||
\setlength\leftmarginvi {1em}
|
||||
\fi
|
||||
\setlength \labelsep {.5em}
|
||||
\setlength \labelwidth{\leftmargini}
|
||||
\addtolength\labelwidth{-\labelsep}
|
||||
\@beginparpenalty -\@lowpenalty
|
||||
\@endparpenalty -\@lowpenalty
|
||||
\@itempenalty -\@lowpenalty
|
||||
\renewcommand\theenumi{\@arabic\c@enumi}
|
||||
\renewcommand\theenumii{\@alph\c@enumii}
|
||||
\renewcommand\theenumiii{\@roman\c@enumiii}
|
||||
\renewcommand\theenumiv{\@Alph\c@enumiv}
|
||||
\newcommand\labelenumi{\theenumi.}
|
||||
\newcommand\labelenumii{(\theenumii)}
|
||||
\newcommand\labelenumiii{\theenumiii.}
|
||||
\newcommand\labelenumiv{\theenumiv.}
|
||||
\renewcommand\p@enumii{\theenumi}
|
||||
\renewcommand\p@enumiii{\theenumi(\theenumii)}
|
||||
\renewcommand\p@enumiv{\p@enumiii\theenumiii}
|
||||
\newcommand\labelitemi{\textbullet}
|
||||
\newcommand\labelitemii{\normalfont\bfseries \textendash}
|
||||
\newcommand\labelitemiii{\textasteriskcentered}
|
||||
\newcommand\labelitemiv{\textperiodcentered}
|
||||
\newenvironment{description}
|
||||
{\list{}{\labelwidth\z@ \itemindent-\leftmargin
|
||||
\let\makelabel\descriptionlabel}}
|
||||
{\endlist}
|
||||
\newcommand*\descriptionlabel[1]{\hspace\labelsep
|
||||
\normalfont\bfseries #1}
|
||||
\if@titlepage
|
||||
\newenvironment{abstract}{%
|
||||
\titlepage
|
||||
\null\vfil
|
||||
\@beginparpenalty\@lowpenalty
|
||||
\begin{center}%
|
||||
\bfseries \abstractname
|
||||
\@endparpenalty\@M
|
||||
\end{center}}%
|
||||
{\par\vfil\null\endtitlepage}
|
||||
\else
|
||||
\newenvironment{abstract}{%
|
||||
\if@twocolumn
|
||||
\section*{\abstractname}%
|
||||
\else
|
||||
\small
|
||||
\begin{center}%
|
||||
{\bfseries \abstractname\vspace{-.5em}\vspace{\z@}}%
|
||||
\end{center}%
|
||||
\quotation
|
||||
\fi}
|
||||
{\if@twocolumn\else\endquotation\fi}
|
||||
\fi
|
||||
\newenvironment{verse}
|
||||
{\let\\\@centercr
|
||||
\list{}{\itemsep \z@
|
||||
\itemindent -1.5em%
|
||||
\listparindent\itemindent
|
||||
\rightmargin \leftmargin
|
||||
\advance\leftmargin 1.5em}%
|
||||
\item\relax}
|
||||
{\endlist}
|
||||
\newenvironment{quotation}
|
||||
{\list{}{\listparindent 1.5em%
|
||||
\itemindent \listparindent
|
||||
\rightmargin \leftmargin
|
||||
\parsep \z@ \@plus\p@}%
|
||||
\item\relax}
|
||||
{\endlist}
|
||||
\newenvironment{quote}
|
||||
{\list{}{\rightmargin\leftmargin}%
|
||||
\item\relax}
|
||||
{\endlist}
|
||||
\if@compatibility
|
||||
\newenvironment{titlepage}
|
||||
{%
|
||||
\if@twocolumn
|
||||
\@restonecoltrue\onecolumn
|
||||
\else
|
||||
\@restonecolfalse\newpage
|
||||
\fi
|
||||
\thispagestyle{empty}%
|
||||
\setcounter{page}\z@
|
||||
}%
|
||||
{\if@restonecol\twocolumn \else \newpage \fi
|
||||
}
|
||||
\else
|
||||
\newenvironment{titlepage}
|
||||
{%
|
||||
\if@twocolumn
|
||||
\@restonecoltrue\onecolumn
|
||||
\else
|
||||
\@restonecolfalse\newpage
|
||||
\fi
|
||||
\thispagestyle{empty}%
|
||||
\setcounter{page}\@ne
|
||||
}%
|
||||
{\if@restonecol\twocolumn \else \newpage \fi
|
||||
\if@twoside\else
|
||||
\setcounter{page}\@ne
|
||||
\fi
|
||||
}
|
||||
\fi
|
||||
\newcommand\appendix{\par
|
||||
\setcounter{chapter}{0}%
|
||||
\setcounter{section}{0}%
|
||||
\gdef\@chapapp{\appendixname}%
|
||||
\gdef\thechapter{\@Alph\c@chapter}}
|
||||
\setlength\arraycolsep{5\p@}
|
||||
\setlength\tabcolsep{6\p@}
|
||||
\setlength\arrayrulewidth{.4\p@}
|
||||
\setlength\doublerulesep{2\p@}
|
||||
\setlength\tabbingsep{\labelsep}
|
||||
\skip\@mpfootins = \skip\footins
|
||||
\setlength\fboxsep{3\p@}
|
||||
\setlength\fboxrule{.4\p@}
|
||||
\@addtoreset {equation}{chapter}
|
||||
\renewcommand\theequation
|
||||
{\ifnum \c@chapter>\z@ \thechapter.\fi \@arabic\c@equation}
|
||||
\newcounter{figure}[chapter]
|
||||
\renewcommand \thefigure
|
||||
{\ifnum \c@chapter>\z@ \thechapter.\fi \@arabic\c@figure}
|
||||
\def\fps@figure{tbp}
|
||||
\def\ftype@figure{1}
|
||||
\def\ext@figure{lof}
|
||||
\def\fnum@figure{\figurename\nobreakspace\thefigure}
|
||||
\newenvironment{figure}
|
||||
{\@float{figure}}
|
||||
{\end@float}
|
||||
\newenvironment{figure*}
|
||||
{\@dblfloat{figure}}
|
||||
{\end@dblfloat}
|
||||
\newcounter{table}[chapter]
|
||||
\renewcommand \thetable
|
||||
{\ifnum \c@chapter>\z@ \thechapter.\fi \@arabic\c@table}
|
||||
\def\fps@table{tbp}
|
||||
\def\ftype@table{2}
|
||||
\def\ext@table{lot}
|
||||
\def\fnum@table{\tablename\nobreakspace\thetable}
|
||||
\newenvironment{table}
|
||||
{\@float{table}}
|
||||
{\end@float}
|
||||
\newenvironment{table*}
|
||||
{\@dblfloat{table}}
|
||||
{\end@dblfloat}
|
||||
\newlength\abovecaptionskip
|
||||
\newlength\belowcaptionskip
|
||||
\setlength\abovecaptionskip{10\p@}
|
||||
\setlength\belowcaptionskip{0\p@}
|
||||
\long\def\@makecaption#1#2{%
|
||||
\vskip\abovecaptionskip
|
||||
\sbox\@tempboxa{#1: #2}%
|
||||
\ifdim \wd\@tempboxa >\hsize
|
||||
#1: #2\par
|
||||
\else
|
||||
\global \@minipagefalse
|
||||
\hb@xt@\hsize{\hfil\box\@tempboxa\hfil}%
|
||||
\fi
|
||||
\vskip\belowcaptionskip}
|
||||
\DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm}
|
||||
\DeclareOldFontCommand{\sf}{\normalfont\sffamily}{\mathsf}
|
||||
\DeclareOldFontCommand{\tt}{\normalfont\ttfamily}{\mathtt}
|
||||
\DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf}
|
||||
\DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit}
|
||||
\DeclareOldFontCommand{\sl}{\normalfont\slshape}{\@nomath\sl}
|
||||
\DeclareOldFontCommand{\sc}{\normalfont\scshape}{\@nomath\sc}
|
||||
\DeclareRobustCommand*\cal{\@fontswitch\relax\mathcal}
|
||||
\DeclareRobustCommand*\mit{\@fontswitch\relax\mathnormal}
|
||||
\newcommand\@pnumwidth{1.55em}
|
||||
\newcommand\@tocrmarg{2.55em}
|
||||
\newcommand\@dotsep{4.5}
|
||||
\setcounter{tocdepth}{2}
|
||||
\newcommand\tableofcontents{%
|
||||
\if@twocolumn
|
||||
\@restonecoltrue\onecolumn
|
||||
\else
|
||||
\@restonecolfalse
|
||||
\fi
|
||||
\chapter*{
|
||||
\begin{center} % Added by Tim to center contents heading
|
||||
\contentsname
|
||||
\end{center} % Added by Tim to center contents heading
|
||||
\@mkboth{%
|
||||
\MakeUppercase\contentsname}{\MakeUppercase\contentsname}}%
|
||||
\@starttoc{toc}%
|
||||
\if@restonecol\twocolumn\fi
|
||||
}
|
||||
\newcommand*\l@part[2]{%
|
||||
\ifnum \c@tocdepth >-2\relax
|
||||
\addpenalty{-\@highpenalty}%
|
||||
\addvspace{2.25em \@plus\p@}%
|
||||
\setlength\@tempdima{3em}%
|
||||
\begingroup
|
||||
\parindent \z@ \rightskip \@pnumwidth
|
||||
\parfillskip -\@pnumwidth
|
||||
{\leavevmode
|
||||
\large \bfseries #1\hfil \hb@xt@\@pnumwidth{\hss #2}}\par
|
||||
\nobreak
|
||||
\global\@nobreaktrue
|
||||
\everypar{\global\@nobreakfalse\everypar{}}%
|
||||
\endgroup
|
||||
\fi}
|
||||
\newcommand*\l@chapter[2]{%
|
||||
\ifnum \c@tocdepth >\m@ne
|
||||
\addpenalty{-\@highpenalty}%
|
||||
\vskip 1.0em \@plus\p@
|
||||
\setlength\@tempdima{1.5em}%
|
||||
\begingroup
|
||||
\parindent \z@ \rightskip \@pnumwidth
|
||||
\parfillskip -\@pnumwidth
|
||||
\leavevmode \bfseries
|
||||
\advance\leftskip\@tempdima
|
||||
\hskip -\leftskip
|
||||
#1\nobreak\hfil \nobreak\hb@xt@\@pnumwidth{\hss #2}\par
|
||||
\penalty\@highpenalty
|
||||
\endgroup
|
||||
\fi}
|
||||
\newcommand*\l@section{\@dottedtocline{1}{1.5em}{2.3em}}
|
||||
\newcommand*\l@subsection{\@dottedtocline{2}{3.8em}{3.2em}}
|
||||
\newcommand*\l@subsubsection{\@dottedtocline{3}{7.0em}{4.1em}}
|
||||
\newcommand*\l@paragraph{\@dottedtocline{4}{10em}{5em}}
|
||||
\newcommand*\l@subparagraph{\@dottedtocline{5}{12em}{6em}}
|
||||
\newcommand\listoffigures{%
|
||||
\if@twocolumn
|
||||
\@restonecoltrue\onecolumn
|
||||
\else
|
||||
\@restonecolfalse
|
||||
\fi
|
||||
\chapter*{\listfigurename}%
|
||||
\@mkboth{\MakeUppercase\listfigurename}%
|
||||
{\MakeUppercase\listfigurename}%
|
||||
\@starttoc{lof}%
|
||||
\if@restonecol\twocolumn\fi
|
||||
}
|
||||
\newcommand*\l@figure{\@dottedtocline{1}{1.5em}{2.3em}}
|
||||
\newcommand\listoftables{%
|
||||
\if@twocolumn
|
||||
\@restonecoltrue\onecolumn
|
||||
\else
|
||||
\@restonecolfalse
|
||||
\fi
|
||||
\chapter*{\listtablename}%
|
||||
\@mkboth{%
|
||||
\MakeUppercase\listtablename}%
|
||||
{\MakeUppercase\listtablename}%
|
||||
\@starttoc{lot}%
|
||||
\if@restonecol\twocolumn\fi
|
||||
}
|
||||
\let\l@table\l@figure
|
||||
\newdimen\bibindent
|
||||
\setlength\bibindent{1.5em}
|
||||
\newenvironment{thebibliography}[1]
|
||||
{\chapter*{\bibname}%
|
||||
\@mkboth{\MakeUppercase\bibname}{\MakeUppercase\bibname}%
|
||||
\list{\@biblabel{\@arabic\c@enumiv}}%
|
||||
{\settowidth\labelwidth{\@biblabel{#1}}%
|
||||
\leftmargin\labelwidth
|
||||
\advance\leftmargin\labelsep
|
||||
\@openbib@code
|
||||
\usecounter{enumiv}%
|
||||
\let\p@enumiv\@empty
|
||||
\renewcommand\theenumiv{\@arabic\c@enumiv}}%
|
||||
\sloppy
|
||||
\clubpenalty4000
|
||||
\@clubpenalty \clubpenalty
|
||||
\widowpenalty4000%
|
||||
\sfcode`\.\@m}
|
||||
{\def\@noitemerr
|
||||
{\@latex@warning{Empty `thebibliography' environment}}%
|
||||
\endlist}
|
||||
\newcommand\newblock{\hskip .11em\@plus.33em\@minus.07em}
|
||||
\let\@openbib@code\@empty
|
||||
\newenvironment{theindex}
|
||||
{\if@twocolumn
|
||||
\@restonecolfalse
|
||||
\else
|
||||
\@restonecoltrue
|
||||
\fi
|
||||
\columnseprule \z@
|
||||
\columnsep 35\p@
|
||||
\twocolumn[\@makeschapterhead{\indexname}]%
|
||||
\@mkboth{\MakeUppercase\indexname}%
|
||||
{\MakeUppercase\indexname}%
|
||||
\thispagestyle{plain}\parindent\z@
|
||||
\parskip\z@ \@plus .3\p@\relax
|
||||
\let\item\@idxitem}
|
||||
{\if@restonecol\onecolumn\else\clearpage\fi}
|
||||
\newcommand\@idxitem{\par\hangindent 40\p@}
|
||||
\newcommand\subitem{\@idxitem \hspace*{20\p@}}
|
||||
\newcommand\subsubitem{\@idxitem \hspace*{30\p@}}
|
||||
\newcommand\indexspace{\par \vskip 10\p@ \@plus5\p@ \@minus3\p@\relax}
|
||||
\renewcommand\footnoterule{%
|
||||
\kern-3\p@
|
||||
\hrule\@width.4\columnwidth
|
||||
\kern2.6\p@}
|
||||
\@addtoreset{footnote}{chapter}
|
||||
\newcommand\@makefntext[1]{%
|
||||
\parindent 1em%
|
||||
\noindent
|
||||
\hb@xt@1.8em{\hss\@makefnmark}#1}
|
||||
\newcommand\contentsname{CONTENTS}
|
||||
\newcommand\listfigurename{FIGURES}
|
||||
\newcommand\listtablename{TABLES}
|
||||
\newcommand\bibname{REFERENCES}
|
||||
\newcommand\indexname{INDEX}
|
||||
\newcommand\figurename{Figure}
|
||||
\newcommand\tablename{Table}
|
||||
\newcommand\partname{PART}
|
||||
\newcommand\chaptername{CHAPTER}
|
||||
\newcommand\appendixname{APPENDIX}
|
||||
\newcommand\abstractname{ABSTRACT}
|
||||
\def\today{\ifcase\month\or
|
||||
January\or February\or March\or April\or May\or June\or
|
||||
July\or August\or September\or October\or November\or December\fi
|
||||
\space\number\day, \number\year}
|
||||
\setlength\columnsep{10\p@}
|
||||
\setlength\columnseprule{0\p@}
|
||||
\pagestyle{plain}
|
||||
\pagenumbering{arabic}
|
||||
\if@twoside
|
||||
\else
|
||||
\raggedbottom
|
||||
\fi
|
||||
\if@twocolumn
|
||||
\twocolumn
|
||||
\sloppy
|
||||
\flushbottom
|
||||
\else
|
||||
\onecolumn
|
||||
\fi
|
||||
\endinput
|
||||
|
||||
%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
%% FOLLOWING ADDED BY TIM AND NOT PART OF STANDARD REPORT CLASS
|
||||
%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
|
||||
|
||||
|
||||
%%
|
||||
%% End of file `timthesis.cls'.
|
129
doc/source/user_guide/working_with_raster.tex
Normal file
@ -0,0 +1,129 @@
|
||||
\chapter{Working with Raster Data}
|
||||
QGIS supports a number of raster data formats. This section describes how to work with raster data in QGIS.
|
||||
\section{What is raster data?}
|
||||
index{rasters!definition}
|
||||
Raster data in GIS are matrices of discrete cells that represent features on, above or below the earth's surface. Each cell in the raster grid is the same size, and cells are usually rectangular (in QGIS they will always be rectangular). Typical raster datasets include remote sensing data such as aerial photography or satellite imagery and modelled data such as an elevation matrix.
|
||||
|
||||
Unlike vector data, raster data typically do not have an associated database record for each cell.
|
||||
|
||||
In GIS, a raster layer would have georeferencing data associated with it which
|
||||
will allow it to be positioned correctly in the map display to allow other
|
||||
vector and raster data to be overlayed with it. QGIS makes use of georeferenced
|
||||
rasters to properly display the data.\index{rasters!georeferenced}
|
||||
|
||||
\section{Raster formats supported in QGIS}
|
||||
QGIS supports a number of different raster formats. Currently tested formats
|
||||
include:\index{rasters!formats}
|
||||
\begin{compactitem}
|
||||
\item Arc/Info Binary Grid
|
||||
\item Arc/Info ASCII Grid
|
||||
\item Grass Raster
|
||||
\item GeoTIFF
|
||||
\item Spatial Data Transfer Standard Grids (with some limitations)
|
||||
\item USGS ASCII DEM
|
||||
\item Erdas Imagine
|
||||
\end{compactitem}
|
||||
Because the raster implmentation in QGIS is based on the GDAL library, other
|
||||
raster formats implemented in GDAL are also likely to work, but have not yet
|
||||
been tested. See Appendix \ref{appdx_gdal} for more
|
||||
details.\index{rasters!implmentation}
|
||||
|
||||
\section{Loading raster data in QGIS}
|
||||
\parpic[l]{\includegraphics{qgis_user_guide_images/addraster}}Raster layers are
|
||||
loaded either by clicking on the Load Raster icon or by selecting the View->Add
|
||||
Raster Layer menu option. More than one layer can be loaded at the same time by
|
||||
holding down the Control key and clicking on multiple items in the file
|
||||
dialog.\index{rasters!loading}
|
||||
|
||||
\section{Raster Properties}
|
||||
|
||||
\parpic[r]{\includegraphics[scale=0.6]{qgis_user_guide_images/rastercontextmenu}}To
|
||||
view and set the properties for a raster layer, right click on the layer name.
|
||||
This displays the raster layer context menu that includes a number of items that
|
||||
allow you to:\index{rasters!context menu}
|
||||
\begin{compactitem}
|
||||
\item Zoom to the full extent of the raster
|
||||
\item Show the raster in the map overview window
|
||||
\item Open the properties dialog (of course)
|
||||
\item Remove the layer from the map
|
||||
\item Set the transparency using a slider control
|
||||
\end{compactitem}
|
||||
Choose \textsl{Properties} from the context menu to open the raster properties
|
||||
dialog for the layer.\index{rasters!properties}
|
||||
|
||||
|
||||
Figure \ref{fig:raster_properties} shows the properties dialog. There are four tabs on the dialog: \textsl{Symbology}, \textsl{General}, \textsl{Metadata}, and \textsl{Pyramids}.
|
||||
|
||||
\begin{figure}[h]
|
||||
\begin{center}
|
||||
\caption{Raster Layers Properties Dialog}\label{fig:raster_properties}\smallskip
|
||||
\includegraphics[scale=.7]{qgis_user_guide_images/raster_properties}
|
||||
\end{center}
|
||||
\end{figure}
|
||||
|
||||
|
||||
\subsection{Symbology Tab}
|
||||
|
||||
|
||||
QGIS supports three forms of raster layers:\index{rasters!supported forms}
|
||||
\begin{compactitem}
|
||||
\item Single Band Grayscale Rasters
|
||||
\item Palette Based RGB Rasters
|
||||
\item Multiband RGB Rasters
|
||||
\end{compactitem}
|
||||
|
||||
From these three basic layer types, eight forms of symbolised raster display can
|
||||
be used:\index{rasters!renderers}
|
||||
\begin{compactenum}
|
||||
|
||||
\item Single Band Grayscale
|
||||
\item Single Band Pseudocolor
|
||||
\item Paletted Grayscale (where only the red, green or blue component of the image is displayed)
|
||||
\item Paletted Pseudocolor (where only the red, green or blue component of the image is displayed, but using a pseudocolor algorithm)
|
||||
\item Paletted RGB
|
||||
\item Multiband Grayscale (using only one of the bands to display the image)
|
||||
\item Mulitiband Pseudocolor (using only one of the bands shown in pseudocolor)
|
||||
\item Multiband RGB (using any combination of three bands)
|
||||
\end{compactenum}
|
||||
\smallskip
|
||||
QGIS can invert the colors in a given layer so that light colors become dark
|
||||
(and dark colors become light). Use the \textsl{Invert Color Map} checkbox to
|
||||
enable / disable this behavior.\index{rasters!inverting the color map}
|
||||
|
||||
QGIS has the ability to display each raster layer at varying transparency
|
||||
levels.\index{rasters!transparency} Use the transparency slider to indicate to what extent the underlying layers (if any) should be visible though the current raster layer. The transparency can also be set using the transparency slider in the layer context menu which is accessible by right-clicking on the layer in the legend.
|
||||
|
||||
QGIS can restrict the data displayed to only show cells whose values are within
|
||||
a given number of standard deviations of the mean for the
|
||||
layer.\index{rasters!standard deviation} This is useful when you have one or two cells with abnormally high values in a raster grid that are having a negative impact on the rendering of the raster. This option is only available for pseudocolor images.
|
||||
|
||||
\subsection{General Tab}
|
||||
The General tab displays basic information about the selected raster, including
|
||||
the layer source and display name in the legend (which can be modified). This
|
||||
tab also shows a thumbnail of the layer, its legend symbol, and the
|
||||
palette.\index{rasters!properties}
|
||||
|
||||
\subsection{Metadata Tab}
|
||||
The Metadata tab displays a wealth of information about the raster layer,
|
||||
including statistics about each band in the current raster layer. Statistics are
|
||||
gathered on a 'need to know' basis, so it may well be that a given layers
|
||||
statistics have not yet been collected.\index{rasters!metadata}
|
||||
|
||||
|
||||
\begin{Tip}\caption{\textsc{Gathering Raster Statistics}}
|
||||
\qgistip{To gather statistics for a layer, select pseudocolor rendering and
|
||||
click the \textsl{Apply} button. Gathering statistics for a layer can be time
|
||||
consuming. Please be patient while QGIS examines your
|
||||
data!\index{rasters!statistics}
|
||||
}
|
||||
\end{Tip}
|
||||
\subsection{Pyramids Tab}
|
||||
\label{raster_pyramids}
|
||||
Large resolution raster layers can slow navigation in QGIS. By creating lower
|
||||
resolution copies of the data (pyramids), performance can be considerably
|
||||
improved as QGIS selects the most suitable resolution to use depending on the
|
||||
level of zoom.\index{rasters!building pyramids}
|
||||
|
||||
You must have write access in the directory where the original data is stored to build pyramids.
|
||||
|
||||
Please note that building pyramids may alter the original data file and once created they cannot be removed. If you wish to preserve a 'non-pyramided' version of your raster, make a backup copy prior to building pyramids.
|
405
doc/source/user_guide/working_with_vector.tex
Normal file
@ -0,0 +1,405 @@
|
||||
\chapter{Working with Vector Data}
|
||||
QGIS supports vector data in a number of formats, including shapefiles,
|
||||
MapInfo mif, and PostGIS\index{PostGIS} layers in a PostgreSQL database. Support for
|
||||
additional data types is provided by plugins, for example delimited
|
||||
text\index{delimited text}.
|
||||
|
||||
This section describes how to work with two common formats:
|
||||
shapefiles\index{shapefile} and PostGIS\index{PostGIS} layers. Many of the
|
||||
features available in QGIS work the same regardless of the vector data source.
|
||||
This is by design and includes the identify, select, labeling, and attributes
|
||||
functions.
|
||||
|
||||
\section{Shapefiles}\index{shapefile}
|
||||
Shapefile support is provided by a library of functions (OGR
|
||||
\url{http://www.remotesensing.org/gdal/ogr})\index{ogr}. See Appendix \ref{appdx_ogr} for a list of supported formats.
|
||||
|
||||
A shapefile actually consists of a minimum of three
|
||||
files:\index{shapefile!format}
|
||||
\begin{compactenum}
|
||||
\item .shp file containing the feature geometries
|
||||
\item .dbf file containing the attributes in dBase format
|
||||
\item .shx index file
|
||||
\end{compactenum}
|
||||
The technical specification for the shapefile format can be found at\\
|
||||
\url{http://www.esri.com/software/opengis/openpdf.html}\index{shapefile!specification}.
|
||||
\subsection{Loading a Shapefile}
|
||||
\parpic[l]{\includegraphics{qgis_user_guide_images/addshapefile}}To load a
|
||||
shapefile, start QGIS and click on the \textit{Add a vector layer} toolbar bar
|
||||
button\index{shapefile!loading}. This same tool can be used to load any of the formats supported by the OGR library.
|
||||
|
||||
Clicking on the tool brings up a standard open file dialog (Figure \ref{fig:openshapefile}) which allows you to navigate the file system and load a shapefile (or other supported data source).
|
||||
\begin{figure}[h]
|
||||
\begin{center}
|
||||
\caption{Open OGR Data Source Dialog}\label{fig:openshapefile}\smallskip
|
||||
\includegraphics[scale=.75]{qgis_user_guide_images/shapefileopendialog}
|
||||
\end{center}
|
||||
|
||||
\end{figure}
|
||||
Selecting a shapefile from the list and clicking Ok loads it into QGIS. Figure \ref{fig:loadedshapefile}
|
||||
shows QGIS after loading the country.shp file.
|
||||
\begin{figure}[h]
|
||||
\begin{center}
|
||||
\caption{QGIS with the countries Shapefile Loaded}\label{fig:loadedshapefile}\smallskip
|
||||
\includegraphics[scale=.6]{qgis_user_guide_images/shapefileloaded}
|
||||
\end{center}
|
||||
|
||||
\end{figure}
|
||||
\begin{Tip}\caption{\textsc{Layer Colors}}
|
||||
\qgistip{When you add a layer to the map, it is assigned a random color. When adding more than one layer at a time, different colors are assigned to each. }
|
||||
\end{Tip}
|
||||
|
||||
Once loaded, you can zoom around the shapefile using the map navigation tools. To change the symbology of a layer, open the layer properties dialog by double clicking on the layer name or by right-clicking on the name in the legend and choosing \textsl{Properties} from the popup menu. See Section \ref{sec:symbology} for more information on setting symbology of vector layers.
|
||||
\subsection{Loading a MapInfo Layer}
|
||||
To load a MapInfo layer, click on the \textit{Add a vector layer}
|
||||
toolbar bar button and change the file type filter to \textit{MapInfo (*.mif
|
||||
*.tab *.MIF *.TAB)} and select the layer you want to load.
|
||||
|
||||
\subsection{Loading an ArcInfo Coverage}
|
||||
Loading an an ArcInfo coverage is done using the same method as with a
|
||||
shapefiles and MapInfo layers. Click on the \textit{Add a vector layer} toolbar
|
||||
button to open the layer dialog. Navigate to the coverage directory and select
|
||||
one of the following files (if present in your coverage)
|
||||
\begin{compactenum}
|
||||
\item .lab - to load a label layer (polygon labels, or standing points
|
||||
\item .cnt - to load a polygon centroid layer
|
||||
\item .arc - to load an arc (line) layer
|
||||
\item .pal - to load a polygon layer
|
||||
\end{compactenum}
|
||||
|
||||
\section{PostGIS Layers}\index{PostGIS!layers}
|
||||
PostGIS layers are stored in a PostgreSQL database. The advantage of PostGIS is the spatial indexing, filtering, and query capability. Using PostGIS, vector functions such as select and identify work more accurately than with OGR layers in QGIS.
|
||||
To use PostGIS layers you must:\index{PostgreSQL!loading layers}
|
||||
\begin{compactenum}
|
||||
\item Create a stored connection in QGIS to the PostgreSQL database (if one is
|
||||
not already defined)\index{PostgreSQL!connection}
|
||||
\item Connect to the database
|
||||
\item Select the layer to add to the map
|
||||
\item Optionally provide a SQL \textit{where} clause to define which features to load from the layer
|
||||
\item Load the layer
|
||||
\end{compactenum}
|
||||
\subsection{Creating a Stored Connection}\index{PostgreSQL!connection}
|
||||
\parpic[l]{\includegraphics{qgis_user_guide_images/addpostgis}}The first time
|
||||
you use a PostGIS data source, you must create a connection to the PostgreSQL
|
||||
database that contains the data. Begin by clicking on the \textit{Add a PostGIS
|
||||
Layer} toolbar button. The \textsl{Add PostGIS Table(s)} dialog will be
|
||||
displayed. To access the connection manager\index{PostgreSQL!connection
|
||||
manager}, click on the \textsl{New} button to
|
||||
display the \textsl{Create a New PostGIS Connection} dialog. The parameters
|
||||
required for a connection are shown in Table \ref{tab:postgis_connection_parms}.
|
||||
\begin{table}[h]\index{PostgreSQL!connection parameters}
|
||||
\centering
|
||||
\caption{PostGIS Connection Parameters}\label{tab:postgis_connection_parms}\medskip
|
||||
\begin{tabular}{|l|p{5in}|}
|
||||
\hline Name & A name for this connection. Can be the same as \textsl{Database}
|
||||
\\
|
||||
\hline Host \index{PostgreSQL!host}
|
||||
& Name of the database host. This must be a resolvable host name the same as would be used to open a telnet connection or ping the host \\
|
||||
\hline Database \index{PostgreSQL!database} & Name of the database \\
|
||||
\hline Port \index{PostgreSQL!port}& Port number the PostgreSQL database server listens on. The default port is 5432.\\
|
||||
\hline Username \index{PostgreSQL!username}& User name used to login to the database \\
|
||||
\hline Password \index{PostgreSQL!password}& password used with \textsl{Username} to connect to the database\\
|
||||
\hline
|
||||
\end{tabular}
|
||||
\end{table}
|
||||
Once the parameters have been filled in, you can test the connection by clicking
|
||||
on the \textsl{Test Connection} button\index{PostgreSQL!connection!testing}. To save the password with the connection information, check the \textsl{Save Password} option.
|
||||
\begin{Tip}\caption{\textsc{QGIS User Settings and
|
||||
Security}}\index{settings}\index{security}
|
||||
\qgistip{Your customized settings for QGIS are stored based on the operating system. On Linux/Unix, the settings are stored in your home directory in .qt/qgisrc. On Windows, the settings are stored in the registry. Depending on your computing environment, storing passwords in your QGIS settings may be a security risk.
|
||||
}
|
||||
\end{Tip}
|
||||
\subsection{Loading a PostGIS Layer}\index{PostgreSQL!loading layers}
|
||||
\parpic[l]{\includegraphics{qgis_user_guide_images/addpostgis}}Once you have one or more connections defined, you can load layers from the PostgreSQL database. Of course this requires having data in PostgreSQL. See Section \ref{sec:loading_postgis_data} for a discussion on importing data into the database.
|
||||
|
||||
To load a layer from PostGIS, perform the following steps:
|
||||
\begin{compactenum}
|
||||
\item If the PostGIS layer dialog is not already open, click on the \textit{Add a PostGIS Layer} toolbar button
|
||||
\item Choose the connection from the drop-down list and click \textsl{Connect}
|
||||
\item Find the layer you wish to add in the list of available layers
|
||||
\item Select it by clicking on it. You can select multiple layers by holding down the shift key while clicking. See Section \ref{sec:query_builder} for information on using the PostgreSQL Query Builder to further define the layer.
|
||||
\item Click on the \textsl{Add} button to add the layer to the map
|
||||
\end{compactenum}
|
||||
\subsection{Using the Query
|
||||
Builder}\label{sec:query_builder}\index{PostgreSQL!query builder}
|
||||
The PostgreSQL Query Builder allows you to define a subset of a table and add it
|
||||
as a layer in QGIS. For example, if you have a towns layer with a population
|
||||
field you could select only larger towns by entering \textsl{population >
|
||||
100000} in the SQL box of the query builder. Figure \ref{fig:querybuilder} shows an
|
||||
example of the query builder populated with data from a layer in PostgreSQL.
|
||||
|
||||
\begin{figure}[h]
|
||||
\begin{center}
|
||||
\caption{PostgreSQL Query Builder}\label{fig:query_builder}\smallskip
|
||||
\includegraphics[scale=.6]{qgis_user_guide_images/querybuilder}
|
||||
\end{center}
|
||||
\end{figure}
|
||||
|
||||
The query builder\index{query builder} lists the layer's database
|
||||
fields in the list box on the left. You can get a sample of the data contained
|
||||
in the highlighted field by clicking on the \textit{Sample} button\index{query
|
||||
builder!generating sample list}. This
|
||||
retrieves the first 25 distinct values for the field from the database. To get a
|
||||
list of all possible values for a field, click on the \textit{All}
|
||||
button\index{query builder!getting all values}. To
|
||||
add a selected field or value to the query, double-click on it\index{query
|
||||
builder!adding fields}. You can use the
|
||||
various buttons to construct the query or you can just type it into the SQL box.
|
||||
|
||||
To test a query, click on the \textit{Test} button\index{query builder!testing
|
||||
queries}. This will return a count of
|
||||
the number of records that will be included in the layer. When satisfied with
|
||||
the query, click \textit{Ok}. The SQL for the where clause will be shown in the
|
||||
SQL column of the layer list.
|
||||
|
||||
|
||||
\begin{Tip}\caption{\textsc{Changing the Layer Definition}}\index{query
|
||||
builder!changing layer definitions}
|
||||
\qgistip{You can change the layer defintion after it is loaded by altering the
|
||||
SQL query used to define the layer. To do this, open the vector layer properties
|
||||
dialog by double-clicking on the layer in the legend and click on the
|
||||
\textit{Query Builder} button on the \textit{General} tab. See Section
|
||||
\ref{sec:vectorprops} for more information.}
|
||||
\end{Tip}
|
||||
|
||||
\subsection{Importing Data into PostgreSQL}\label{sec:loading_postgis_data}
|
||||
\index{SPIT!importing data}
|
||||
Data can be imported into PostgreSQL using a number of methods. PostGIS includes a utility called shp2pgsql that can be used to import shapefiles into a PostGIS enabled database.
|
||||
|
||||
\parpic[l]{\includegraphics{qgis_user_guide_images/spiticon}}QGIS comes with a
|
||||
plugin named SPIT (Shapefile to PostGIS Import Tool)\index{SPIT}.
|
||||
SPIT can be used to load mutliple shapefiles at one time and includes support
|
||||
for schemas. To use SPIT, open the Plugin Manager from the Tools menu and load
|
||||
the plugin by checking the box next to the SPIT plugin and click Ok. The SPIT
|
||||
icon will be added to the plugin toolbar\index{SPIT!loading}.
|
||||
|
||||
To import a shapefile, click on the SPIT tool in the toolbar to open the dialog.
|
||||
You can add one or more files to the queue by clicking on the \textsl{Add}
|
||||
button. To process the files, click on the Import button. The progress of the
|
||||
import as well as any errors/warnings will be displayed as each shapefile is
|
||||
processed.
|
||||
\begin{Tip}\caption{\textsc{Importing Shapefiles Containing
|
||||
PostgreSQL Reserved Words}}\index{SPIT!reserved words}
|
||||
\qgistip{If a shapefile is added to the queue containing fields that are
|
||||
reserved words in the PostgreSQL database a dialog will popup showing the status
|
||||
of each field. You can edit the field names\index{SPIT!editing field names}
|
||||
prior to import and change any that are reserved words (or change any other
|
||||
field names as desired). Attempting to
|
||||
import a shapefile with reserved words as field names will likely fail.}
|
||||
\end{Tip}
|
||||
\section{The Vector Properties
|
||||
Dialog}\label{sec:vectorprops}\index{vector layers!properties dialog}
|
||||
The vector properties dialog provides information about a layer, symbology
|
||||
settings, and labeling options. If your vector layer has been loaded from a
|
||||
PostgreSQL / Postgis datastore, you can also alter the underlying SQL for the
|
||||
layer - either by hand editing the SQL on the \textit{General} tab, or by invoking the
|
||||
query builder dialog on the \textit{General} tab. To access the properties dialog,
|
||||
double-click on a layer in the legend or right-click on the layer and select
|
||||
Properties from the popup menu.
|
||||
|
||||
\subsection{Vector Symbology}\label{sec:symbology}\index{vector
|
||||
layers!symbology}
|
||||
|
||||
QGIS supports a number of symbology renderers to control how
|
||||
vector features are displayed. Currently the following renderers
|
||||
are available:
|
||||
|
||||
\begin{compactdesc}
|
||||
\item[Single symbol] - a single style is applied to every
|
||||
object in the layer.\index{vector layers!renderers!single symbol}
|
||||
\item[Graduated symbol] - objects within the layer are
|
||||
displayed with different symbols classified by the values of a
|
||||
particular field.\index{vector layers!renderers!graduated symbol}
|
||||
\item[Continuous colour] - objects within the layer are
|
||||
displayed with a spread of colours classified by the numerical
|
||||
values within a specified field.\index{vector layers!renderers!continous color}
|
||||
\item[Unique value] - objects are classified by the unique
|
||||
values within a specified field with each value having a
|
||||
different symbol.\index{vector layers!renderers!unique value}
|
||||
\end{compactdesc}
|
||||
|
||||
For layers containing point features, additional renderers are
|
||||
available that use SVG icons:
|
||||
|
||||
\begin{compactdesc}
|
||||
\item[Single marker] - a single specified icon is used for
|
||||
every point within the layer.\index{vector layers!renderers!single marker}
|
||||
\item[Graduated marker] - points within the layer are
|
||||
displayed with different icons classified by values within a
|
||||
particular field.\index{vector layers!renderers!graduated marker}
|
||||
\item[Unique value marker] - points are classified by unique
|
||||
values within a specified field with each value having a
|
||||
different icon.\index{vector layers!renderers!unique value marker}
|
||||
\end{compactdesc}
|
||||
|
||||
To change the symbology for a layer, simply double click on its legend entry and
|
||||
the vector layer properties dialog will be shown.\index{symbology!changing}
|
||||
|
||||
\begin{figure}[h]
|
||||
\begin{center}
|
||||
\caption{Vector Layer Properties Dialog}\label{fig:vector_symbology}\smallskip
|
||||
\includegraphics[scale=.5]{qgis_user_guide_images/vectorLayerSymbology}
|
||||
\end{center}
|
||||
\end{figure}
|
||||
%force all figures to be printed
|
||||
\section{Attribute Actions}\index{actions}
|
||||
A new tool in QGIS 0.6 provides the ability to perform an action based on the
|
||||
attributes of a feature. This can be used to perform any number of actions, for
|
||||
example, running a program with arguments built from the attributes of a
|
||||
feature or passing parameters to a web reporting tool.
|
||||
|
||||
Actions are useful when you frequently want to run an external application or
|
||||
view a web page based on one or more values in your vector layer. An example is
|
||||
performing a search based on an attribute value. This concept is used in the
|
||||
following discussion.
|
||||
|
||||
\subsection{Defining Actions}\index{actions!defining}
|
||||
Attribute actions are defined from the vector layer properties dialog. To define
|
||||
an action, open the vector layer properties dialog and click on the
|
||||
\textit{Actions} tab. Provide a descriptive name for the action. The action
|
||||
itself must contain the name of the application that will be executed when the
|
||||
action is invoked. You can add one or more attribute field values as arguments
|
||||
to the application. When the action is invoked any set of characters that start
|
||||
with a \% followed by the name of a field will be replaced by the value of that
|
||||
field. The special characters \%\% \index{\%\%}will be replaced by the value of
|
||||
the field that was selected from the identify results or attribute table (see
|
||||
Using Actions below). Double quote marks can be used to group text into a
|
||||
single argument to the program, script or command. Double quotes will be ignored
|
||||
if preceeded by a backslash.
|
||||
|
||||
Two example actions are shown below:\index{actions!examples}
|
||||
\begin{compactenum}
|
||||
\item \texttt{konqueror http://www.google.com/search?q=\%nam}
|
||||
\item \texttt{konqueror http://www.google.com/search?q=\%\%}
|
||||
\end{compactenum}
|
||||
In the first example, the web browser konqueror is invoked and passed a URL to
|
||||
open. The URL performs a Google search on the value of the \textit{nam} field
|
||||
from our vector layer. Note that the application or script called by the action
|
||||
must be in the path or you must provided the full path. To be sure, we could
|
||||
rewrite the first example as: \texttt{/opt/kde3/bin/konqueror
|
||||
http://www.google.com/search?q=\%nam}. This will ensure that the konqueror
|
||||
application will be executed when the action is envoked.
|
||||
|
||||
The second example uses the \%\% notation which does not rely on a particular
|
||||
field for its value. When the action is invoked, the \%\% will be replaced by
|
||||
the value of the selected field in the identify results or attribute table.
|
||||
|
||||
\subsection{Using Actions}\index{actions!using}
|
||||
Actions can be invoked from either the \textit{Identify Results} dialog or the
|
||||
\textit{Attribute table} dialog. To invoke an action, right click on the record
|
||||
and choose the action from the popup menu. Actions are listed in the popup menu
|
||||
by the name you assigned when defining the actions. Click on the action you wish
|
||||
to invoke.
|
||||
|
||||
If you are invoking an action that uses the \%\% notation, right-click on the
|
||||
field value in the \textit{Identify Results} dialog or the
|
||||
\textit{Attribute table} that you wish to pass to the application or script.
|
||||
|
||||
Here is another example that pulls data out of a vector layer and inserts it
|
||||
into a file using bash and the `echo' command (so it will only work on Gnu/Linux
|
||||
and perhaps Mac OSX). The layer in question has fields for a species name
|
||||
(taxon\_name), latitude (lat) and longitude (long). I would like to be able to
|
||||
make a spatial selection of a localites and export these field values to a text
|
||||
file for the selected record (shown in yellow in the QGIS map area). Here is the
|
||||
action to achieve this:
|
||||
|
||||
\begin{verbatim}
|
||||
bash -c "echo \"%taxon_name %lat %long\" >> /tmp/species_localities.txt"
|
||||
\end{verbatim}
|
||||
|
||||
After selecting a few localties and running the action on each one, opening the output file will show something like this:
|
||||
|
||||
\begin{verbatim}
|
||||
Acacia mearnsii -34.0800000000 150.0800000000
|
||||
Acacia mearnsii -34.9000000000 150.1200000000
|
||||
Acacia mearnsii -35.2200000000 149.9300000000
|
||||
Acacia mearnsii -32.2700000000 150.4100000000
|
||||
\end{verbatim}
|
||||
|
||||
|
||||
\section{Editing}\index{editing}
|
||||
|
||||
As of version 0.6 QGIS supports basic capabilities for editing spatial data.
|
||||
Before reading any further you should note that at this stage editing is still
|
||||
experimental. Before performing any edits, always make a backup of the dataset
|
||||
you are about to edit.
|
||||
|
||||
\textbf{Note} - the procedure for editing GRASS layers is different - see
|
||||
Section \ref{grass_digitising} for details.
|
||||
|
||||
\subsection{Editing an Existing Layer}\index{editing!an existing layer}
|
||||
\label{sec:edit_existing_layer}
|
||||
If you wish to edit an existing layer, choose \textit{Start Editing} from the
|
||||
context menu after right clicking on the legend entry for that layer. Remember
|
||||
to backup your data before starting! Once the layer is in edit mode you will
|
||||
see a small \includegraphics[scale=1]{qgis_user_guide_images/editable} icon to
|
||||
remind you.\index{editing!icon}
|
||||
|
||||
Now that the layer is editable, you can use the \textit{Capture Points} icon (or
|
||||
similiar icon for line and polygon layers) on the toolbar to put the qgis cursor
|
||||
into digitising mode. If you are capturing a point feature simply use the pan
|
||||
and zoom tools to navigate to the area of interest, then click the
|
||||
\textit{Capture Points} tool and click on the map area to create the
|
||||
new point feature. A window will appear allowing you to set the attributes.
|
||||
Figure \ref{fig:vector_digitising} shows setting attributes for a fictitious
|
||||
new city in the Antarctic.
|
||||
|
||||
\begin{figure}[h]
|
||||
\begin{center}
|
||||
\caption{Vector Digitizing Atributes Capture Dialog}\label{fig:vector_digitising}\smallskip
|
||||
\includegraphics[scale=.5]{qgis_user_guide_images/digitising_attributes}
|
||||
\end{center}
|
||||
\end{figure}
|
||||
|
||||
In its current implementation the attributes dialog box does not check that the
|
||||
data matches the type expected, so make sure of this before
|
||||
pressing \textit{Ok}.
|
||||
|
||||
To delete a feature, select it using the selection tool and choose
|
||||
\textit{Delete selection} from the editing tools.
|
||||
|
||||
Once you have finished adding features, choose \textit{Stop Editing} from the
|
||||
layer's context menu. Choosing \textit{Yes} will save the changes to disk, while
|
||||
choosing \textit{No} at this point will cause them to be discarded.
|
||||
\index{editing!saving changes}
|
||||
%Note that QGIS does not yet provide any way to delete an individual feature.
|
||||
|
||||
\subsection{Creating a New Layer}\index{editing!creating a new layer}
|
||||
|
||||
In its current incarnation, the editing of attributes associated with spatial
|
||||
features is extremely basic and subsequently some of the procedures explained
|
||||
below involve some extra steps which will later no longer be necessary as
|
||||
the editing tools mature.
|
||||
|
||||
To create a new layer, choose \textit{New Vector Layer} from the \textit{Layer}
|
||||
menu. You will be prompted for the layer type - either point, line or polygon.
|
||||
Note QGIS that
|
||||
does not yet support creation of 2.5D features (i.e. features with X,Y,Z
|
||||
coordinates) or measure features. At this time, only shapefiles can be
|
||||
created. In a future version of QGIS, creation of any OGR or PostgreSQL layer type will be supported.
|
||||
|
||||
Having selected the layer type, you will be prompted for the filename for your
|
||||
new layer. QGIS will automatically add a .shp extension to the name you specify.
|
||||
Once the layer has been created, you edit it in the same way as described in
|
||||
Section \ref{sec:edit_existing_layer} above. When the shapefile is created,
|
||||
only one attribute field called "dummy" is added.
|
||||
In order to add additional fields you need to
|
||||
take a few extra steps as referred to earlier \footnote{These
|
||||
limitations will be removed in the next version of QGIS.}.
|
||||
|
||||
Immediately after creating the new shape file,\index{editing!adding attribute
|
||||
fields} remove it from the legend. Then in a bash or MSDOS shell, use the
|
||||
shapelib\footnote{shapelib is available from
|
||||
\url{http://shapelib.maptools.org/}} `dbfcreate' tool to create a new copy of
|
||||
the associated .dbf file. Here is an example:
|
||||
|
||||
\begin{verbatim}
|
||||
# dbfcreate timtest.dbf -s taxon_name 255, -n lat 3 5, -n long 3 5, -s notes 255
|
||||
# dbfdump -h timtest.dbf
|
||||
Field 0: Type=String, Title=`taxon_name', Width=255, Decimals=0
|
||||
Field 1: Type=Double, Title=`lat', Width=3, Decimals=5
|
||||
Field 2: Type=Double, Title=`long', Width=3, Decimals=5
|
||||
Field 3: Type=String, Title=`notes', Width=255, Decimals=0
|
||||
\end{verbatim}
|
||||
|
||||
Having modified the .dbf file to your needs you can now go ahead and digitise features using the same procedure as described in Section \ref{sec:edit_existing_layer}.
|
316
i18n/qgis_it.ts
@ -268,10 +268,6 @@
|
||||
<source>Automatically snap to round number on resize</source>
|
||||
<translation>Arrotonda automaticamente ridimensionando</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>© QGIS 2004</source>
|
||||
<translation>© QGIS 2004</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Origin (Lower Left)</source>
|
||||
<translation>Origine (in basso a sinistra)</translation>
|
||||
@ -296,6 +292,10 @@
|
||||
<source>Graticule Size (units in degrees)</source>
|
||||
<translation>Dimensioni del reticolo (unità in gradi)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>© QGIS 2004</source>
|
||||
<translation>© QGIS 2004</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>QFileDialog</name>
|
||||
@ -398,14 +398,6 @@
|
||||
<source>No PostgreSQL data provider was found in the QGIS lib directory</source>
|
||||
<translation>Il supporto per PostgreSQL non è presente nelle librerie di QGIS</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Quantum GIS -- Untitled</source>
|
||||
<translation>Quantum GIS -- Senza titolo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Quantum GIS --</source>
|
||||
<translation>Quantum GIS --</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Saved map to:</source>
|
||||
<translation>Mappa salvata in:</translation>
|
||||
@ -670,6 +662,66 @@
|
||||
<source>Unable to save project to </source>
|
||||
<translation>Impossibile salvare il progetto come </translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Map legend that displays all the layers currently on the map canvas. Click on the check box to turn a layer on or off. Double click on a layer in the legend to customize its appearance and set other properties.</source>
|
||||
<translation>Legenda che mostra tutti i livelli attualmente presenti sulla mappa. Per abilitare/disabilitare la vista di un livello basta fare click sul relativo check box. Un doppio click su un livello nella legenda permette di personalizzarne il tipo di rappresentazione ed altre proprietà.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Map overview canvas. This canvas can be used to display a locator map that shows the current extent of the map canvas. The current extent is shown as a red rectangle. Any layer on the map can be added to the overview canvas.</source>
|
||||
<translation>Vista panoramica. Quest'area può essere utilizzata per visualizzare l'estensione attualmente in uso dalla mappa. L'estensione in uso è rappresentata da un rettangolo rosso. Qualsiasi livello può essere aggiunto come vista panoramica.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Map canvas. This is where raster and vector layers are displayed when added to the map</source>
|
||||
<translation>Area mappa. Questa è la zona dove raster e vettoriali vengono visualizzati e aggiunti alla mappa</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Progress bar that displays the status of rendering layers and other time-intensive operations</source>
|
||||
<translation>Barra di progressione che mostra lo stato del ridisegnamento dei livelli e moltre altre operazioni che richiedono tempo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Displays the current map scale</source>
|
||||
<translation>Mostra la scala attualmente in uso sulla mappa</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Shows the map coordinates at the current cursor postion. The display is continuously updated as the mouse is moved.</source>
|
||||
<translation>Mostra le coordinate della mappa nella posizione del cursore. L'informazione viene aggiornata ad ogni spostamento del mouse.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>When checked, the map layers are rendered in response to map navigation commands and other events. When not checked, no rendering is done. This allows you to add a large number of layers and symbolize them before rendering.</source>
|
||||
<translation>Se selezionato, l'area dedicata alla mappa ridisegna tutti i vettoriali con le relative proprietà. Se non selezionato, non avverà alcun ridisegnamento. Questo permette di aggiungere un gran numero di vettoriali e di cambiarne le proprietà prima che vengano disegnati.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Save delimited text as shapefile</source>
|
||||
<translation>Salva un testo delimitato come shapefile</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Improved Delimited Text plugin, including preview of text file</source>
|
||||
<translation>Miglioramento del plugin per il testo delimitato compresa l'anteprima del contenuto del file</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Improved SPIT handling of PostgreSQL reserved words and shapefiles with multiple geometry types</source>
|
||||
<translation>Miglioramento del plugin SPIT: gestione delle parole riservate e degli shapefile con geometrie di tipo diverso</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Display SQL query used to create a PostGIS layer</source>
|
||||
<translation>Mostra la query SQL utilizzata per creare il vettoriale PostGIS</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>PostgreSQL query builder</source>
|
||||
<translation>Creatore di query PostgreSQL</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Ability to redefine the query used for PostgreSQL layers from the layer properties dialog</source>
|
||||
<translation>Possibilità di redifinire una query utilizzata da un vettoriale PostgreSQL dalle proprietà del vettoriale</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>North arrow, scalebar, and copyright plugins save their state in the project file</source>
|
||||
<translation>Nel file di progetto vengono salvati gli stati dei plugin: rosa dei venti, barra di scala e copyright</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Datasets with UTF8, Kanjii and CJK filenames now load properly</source>
|
||||
<translation>Caricamento dei dati con nomi dei file codificati in UTF8, Kanjii e CJK</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>QgisAppBase</name>
|
||||
@ -1326,12 +1378,6 @@ http://www.remotesensing.org/gdal/formats_list.html</translation>
|
||||
<source><h2>Quantum GIS (qgis)</h2></source>
|
||||
<translation><h2>Quantum GIS (qgis)</h2></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source><p align="center">Quantum GIS is licensed under the GNU General Public License<p>
|
||||
<p align="center">http://www.gnu.org/licenses</p></source>
|
||||
<translation><p align="center">Quantum GIS è rilasciato sotto GNU General Public License<p>
|
||||
<p align="center">http://www.gnu.org/licenses</p></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>QGIS Home Page</source>
|
||||
<translation>QGIS Home Page</translation>
|
||||
@ -1344,6 +1390,24 @@ http://www.remotesensing.org/gdal/formats_list.html</translation>
|
||||
<source>Providers</source>
|
||||
<translation>Fornitori dati</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Christoph Spoerri</source>
|
||||
<translation>Christoph Spoerri</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Tom Elwertowski</source>
|
||||
<translation>Tom Elwertowski</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source><p align="center">Quantum GIS is licensed under the GNU General Public License<p>
|
||||
<p align="center">http://www.gnu.org/licenses</p></source>
|
||||
<translation><p align="center">Quantum GIS è distribuito sotto licenza GNU General Public License<p>
|
||||
<p align="center">http://www.gnu.org/licenses</p></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Gavin Macaulay</source>
|
||||
<translation>Gavin Macaulay</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>QgsAttributeActionDialogBase</name>
|
||||
@ -1359,10 +1423,6 @@ http://www.remotesensing.org/gdal/formats_list.html</translation>
|
||||
<source>Action</source>
|
||||
<translation>Azione</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>This list contains all actions that have been defined for the current layer. Add actions by entering the details in the controls below and then pressing the Insert action button. Actions can be edited here by double clikcing on the item.</source>
|
||||
<translation>Questa lista contiene tutte le azione che hai definito per il livello in uso. Le azioni si aggiungono inserendo i dettagli per ogni controllo and e premendo il bottone di inserte. Ogni azione può essere modificata con un doppio click sull'oggetto.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Move up</source>
|
||||
<translation>Sposta in su</translation>
|
||||
@ -1403,10 +1463,6 @@ http://www.remotesensing.org/gdal/formats_list.html</translation>
|
||||
<source>Action:</source>
|
||||
<translation>Azione:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Enter the action here. This can be any program, script or command that is available on your system. When the action is invoked any set of characters that start with a % and then have the name of a field will be replaced by the value of that field. The special characters %% will replaced by the value of the field that was selected.</source>
|
||||
<translation>Inserire l'azione. L'azione può essere un qualsiasi programma, o script o comando presente sul tuo sistema. Quando una azione viene eseguita tutti i caratteri che iniziano con il simbolo % e che hanno il nome di un campo, verranno sostituiti con il valore presente nel campo selezionato. Il carattere speciale %% verrà sostituito con il valore del campo selezionato.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Enter the action command here</source>
|
||||
<translation>Inserire il comando dell'azione</translation>
|
||||
@ -1447,6 +1503,14 @@ http://www.remotesensing.org/gdal/formats_list.html</translation>
|
||||
<source>The valid attribute names for this layer</source>
|
||||
<translation>Nomi degli attributi valiti per questo vettoriale</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>This list contains all actions that have been defined for the current layer. Add actions by entering the details in the controls below and then pressing the Insert action button. Actions can be edited here by double clicking on the item.</source>
|
||||
<translation>Questa lista contiene tutte le azioni che sono stato definito per il vettoriale in uso. Per aggiungere un'azione è sufficente fare click sul bottone Aggiungi qui sotto. La azioni possono essere modificate facendo doppio click su di esse.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Enter the action here. This can be any program, script or command that is available on your system. When the action is invoked any set of characters that start with a % and then have the name of a field will be replaced by the value of that field. The special characters %% will replaced by the value of the field that was selected. Double quote marks group text into single arguments to the program, script or command. Double quotes will be ignored if preceeded by a backslash</source>
|
||||
<translation>Inserisci l'azione qui. Questo può essere un programma o uno script o un comando presenti sul tuo sistema. Quando l'azione viene invocata tutti i caratteri che cominciano con il simbolo % e che hanno nome uguale al campo vengono sostituiti con il valore contenuto nel relativo campo. Il carattere speciale %% sostituisce il valore del campo che è stato selezionato. Le doppie virgolette marcano una parte di testo come singolo argomento per il programma, script o comando. Le doppie virgolette vengono ignorate se precedute da un backslash.</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>QgsAttributeDialogBase</name>
|
||||
@ -1681,6 +1745,29 @@ http://www.remotesensing.org/gdal/formats_list.html</translation>
|
||||
<translation>Sql</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>QgsDelimitedTextPluginGui</name>
|
||||
<message>
|
||||
<source>No layer name</source>
|
||||
<translation>Nessun nome assegnato al vettoriale</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Please enter a layer name before adding the layer to the map</source>
|
||||
<translation>Prima di inserire il vettoriale sulla mappa occorre assegnare un nome</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>No delimiter</source>
|
||||
<translation>Nessun delimitatore</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Please specify a delimiter prior to parsing the file</source>
|
||||
<translation>Occorre definire un delimitatore per poter importare il file</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Choose a delimited text file to open</source>
|
||||
<translation>Scegli un file con testo delimitato d'aprire</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>QgsDelimitedTextPluginGuiBase</name>
|
||||
<message>
|
||||
@ -1743,18 +1830,6 @@ http://www.remotesensing.org/gdal/formats_list.html</translation>
|
||||
<source>Name of the field containing y values. Choose a field from the list. The list is generated by parsing the header row of the delimited text file.</source>
|
||||
<translation>Nome del campo che contiene il valore y. Seleziona un campo dalla lista. La lista è generata utilizzando la riga di intestazione del file di testo delimitato.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source><html><head><meta name="qrichtext" content="1" /></head><body style="font-size:12pt;font-family:Arial">
|
||||
<p style="margin-top:16px"><span style="font-size:18pt;font-weight:600">Description</span></p>
|
||||
<p>Select the file containing delimited text with lat/lon coordinates that you would like to use as a point layer and this plugin will do the job for you! </p>
|
||||
<p>Use the layer name box to specify the legend name for the new layer. Use the delimeter box to specify what the delimeter is for your file (e.g. space, commar or tab). Note this box accepts regex entries so use \t for tab and so on. After choosing a delimeter, press the parse button to see what field names have been detected in your file.</p>
|
||||
<p>Use the X and Y fields to specify which columns represent latitude and longitude..</p>
|
||||
</body></html>
|
||||
</source>
|
||||
<translation><html><head><meta name="qrichtext" content="1" /></head><body style="font-size:12pt;font-family:Arial">
|
||||
<p style="margin-top:16px"><span style="font-size:18pt;font-weight:600">Descrizione</span></p>
|
||||
<p>Questo plugin permette di visualizzare come vettoriale di punti un file che contiene del testo delimitato con coordinate latitudine/longitudine</p><p>L'etichetta 'nome del vettoriale' serve per definire il nome con cui deve apparire nella legenda, il campo 'delimitatore' specifica quale sia il delimitatore presente nel file (es. uno spazio, virgola o punto e virgola o una tabulazione). Nota: quest'ultimo input accetta espressioni regolari, quindi se la separazione è data da una tabulazione va utilizzato \t. Una volta selezionato il delimitato occorre premere sul bottone di analisi per individuare i nomi dei capi presenti nel file</p><p>Utilizzare i campi X e Y per identificare le colonne che rappresentano la latitudine e la longitudine.</p></body></html></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Layer name</source>
|
||||
<translation>Nome vettoriale</translation>
|
||||
@ -1844,6 +1919,24 @@ Questo bottone non sarà abilitato fino a quando non sarà inserito il carattere
|
||||
<source>Alt+C</source>
|
||||
<translation>Alt+C</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Sample text</source>
|
||||
<translation>Testo di esempio</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source><html><head><meta name="qrichtext" content="1" /></head><body style="font-size:12pt;font-family:Arial">
|
||||
<p style="margin-top:16px"><span style="font-size:16pt;font-weight:600">Description</span></p>
|
||||
<p>Select a delimited text file containing x and y coordinates that you would like to use as a point layer and this plugin will do the job for you! </p>
|
||||
<p>Use the layer name box to specify the legend name for the new layer. Use the delimiter box to specify what delimeter is used in your file (e.g. space, commar or tab). Note this box accepts regular expressions so use \t for tab and so on. After choosing a delimiter, press the parse button an select the columns containing the x and y values for the layer.</p>
|
||||
</body></html>
|
||||
</source>
|
||||
<translation><html><head><meta name="qrichtext" content="1" /></head><body style="font-size:12pt;font-family:Arial">
|
||||
<p style="margin-top:16px"><span style="font-size:16pt;font-weight:600">Descrizione</span></p>
|
||||
<p>Tramite questo plugin è possibile caricare un file di testo delimitato che contiene coordinate X e Y e visualizzarlo sulla mappa come se fosse un vettoriale di punti.</p>
|
||||
<p>Utilizzare: la casella \"nome vettoriale\" per specificare con quale nome il nuovo vettoriale apparirà in legenda e quella \"delimitatore\" per scegliere il tipo di delimitatore usando nel file (es. spazio, virgola, o tabulatore). Nota: a casella \"delimitatore\" accetta anche espressioni regolari, pertanto utilizzare \t per il tabulatore e così via per altri. Dopo aver scelto il delimitatore, premere il bottone di caricamento del file e selezionare le colonne che contengono i valore x e y per il vettoriale</p>
|
||||
</body></html>
|
||||
</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>QgsDlgPgBufferBase</name>
|
||||
@ -1942,6 +2035,50 @@ Questo bottone non sarà abilitato fino a quando non sarà inserito il carattere
|
||||
<source>Unique Value Marker</source>
|
||||
<translation>Un simbolo per ogni valore</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>The source of the data (path name or database connection information)</source>
|
||||
<translation>Sorgente dei dati (nome del percorso o informazione della connessione del database)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>This button opens the PostgreSQL query builder and allows you to create a subset of features to display on the map canvas rather than displaying all features in the layer</source>
|
||||
<translation>Questo bottone esegue il costruttore di query PostgreSQL e permette di selezionare un sottoinsieme di geometrie, presenti nella tabella, da visualizzare nell'area dedicata alla mappa</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>The query used to limit the features in the layer is shown here. This is currently only supported for PostgreSQL layers. To enter or modify the query, click on the Query Builder button</source>
|
||||
<translation>La query utilizzata per individuare le geometrie del vettoriale è questa qui sotto. Attualmente il supporto è solo per i vettoriali PostgreSQL. Per cambiare la query, fa click sul bottone Costruttore di query</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Geometry type of the features in this layer</source>
|
||||
<translation>Tipo di geometrie degli elementi nel vettoriale</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>The number of features in this layer</source>
|
||||
<translation>Numero di elementi del vettoriale</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>In order for QGIS to support SVG markers under Windows, we need to build QGIS</source>
|
||||
<translation>Per poter utilizzare il supporto per i simboli SVG su Windows, dobbiamo compilare QGIS</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source> using the commercial version of Qt. As this project is developed by volunteers</source>
|
||||
<translation> utilizzando la versione commerciale delle QT. Questo progetto è portato avanti da volontari</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source> donating their time, we don't have the financial resources to purchase Qt</source>
|
||||
<translation> che offrono il loro tempo libero, noi non abbiamo abbastanza risorse finanaziare per acquistare il pacchetto</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source> commercial. If you would like to help us, please visit the QGIS sourceforge</source>
|
||||
<translation> commerciale. Se ci vuoi aiutare visita il sito QGIS su sourceforge</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source> home page to make a donation</source>
|
||||
<translation> e fa una donazione</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>No SVG Support</source>
|
||||
<translation>Mancato supporto SVG</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>QgsDlgVectorLayerPropertiesBase</name>
|
||||
@ -2110,6 +2247,50 @@ Questo bottone non sarà abilitato fino a quando non sarà inserito il carattere
|
||||
<translation>Azioni</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>QgsEditReservedWordsBase</name>
|
||||
<message>
|
||||
<source>Edit Reserved Words</source>
|
||||
<translation>Inserisci parole riservate</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Status</source>
|
||||
<translation>Stato</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Column name</source>
|
||||
<translation>Nome colonna</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Index</source>
|
||||
<translation>Indice</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>This shapefile contains reserved words. These may affect the import into PostgreSQL. Edit the column names so none of the reserved words listed at the right are used. You may also change any column name if desired.</source>
|
||||
<translation>Questo shapefile contiene parole riservate, Questo può creare qualche problema nell'importarlo in PostgreSQL.
|
||||
Modifica i nomi delle colonne in modo che nessuna delle parole nella lista sulla destra siano utilizzate. Se vuoi puoi anche cambiare il nome di una qualsiasi colonna.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Help</source>
|
||||
<translation>&Aiuto</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>F1</source>
|
||||
<translation>F1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&OK</source>
|
||||
<translation>&OK</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Cancel</source>
|
||||
<translation>&Annulla</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Reserved Words</source>
|
||||
<translation>Parole riservate</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>QgsGPSDeviceDialogBase</name>
|
||||
<message>
|
||||
@ -2156,7 +2337,7 @@ Questo bottone non sarà abilitato fino a quando non sarà inserito il carattere
|
||||
</message>
|
||||
<message>
|
||||
<source>Update device</source>
|
||||
<translation>Aggiora dispositivo</translation>
|
||||
<translation>Aggiorna dispositivo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Delete device</source>
|
||||
@ -3013,10 +3194,6 @@ scala</translation>
|
||||
<source>Font and Alignment</source>
|
||||
<translation>Carattere e allineamento</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>°</source>
|
||||
<translation>°</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Buffer and Position</source>
|
||||
<translation>Buffer e Posizione</translation>
|
||||
@ -3025,6 +3202,10 @@ scala</translation>
|
||||
<source>Advanced Data Defined Style</source>
|
||||
<translation>Definizioni avanzate</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>°</source>
|
||||
<translation>°</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>QgsLegendItemBase</name>
|
||||
@ -3512,10 +3693,10 @@ By default QGIS uses a value of 5. Increase the value if you have trouble
|
||||
identifying features without zooming in very close.
|
||||
</html></source>
|
||||
<translation><html>
|
||||
<b>Note:</b> Specifica il valore in millesimi Il raggio di ricerca è calcolato nel seguente modo:<br>
|
||||
&nbsp;&nbsp;<i>(Larghezza della mappa) * ( Valore/1000.0)</i>
|
||||
<b>Nota:</b> Specificare il valore in millesimi. Il valore di ricerca è calcolato come:<br>
|
||||
&nbsp;&nbsp;<i>(Larghezza mappa) * ( Valore/1000.0)</i>
|
||||
<br>
|
||||
QGIS utilizza un valore predefinito di 5 unità. Aumenta il valore solo se hai necessità di identificare una geometria senza uno zoom molto vicino.
|
||||
Il valore predefinito di QGIS è 5. Aumenta il valore solo se hai problemi ad individuare una geometria senza un livello di zoom molto alto
|
||||
</html></translation>
|
||||
</message>
|
||||
</context>
|
||||
@ -3571,6 +3752,30 @@ QGIS utilizza un valore predefinito di 5 unità. Aumenta il valore solo se hai n
|
||||
<source>An error occurred when executing the query:</source>
|
||||
<translation>Ho riscontrato un errore mentre eseguivo la query:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Connection Failed</source>
|
||||
<translation>Connessione fallita</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Connection to the database failed:</source>
|
||||
<translation>Connessione al database fallita:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Database error</source>
|
||||
<translation>Errore database</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Failed to get sample of field values</source>
|
||||
<translation>Impossibile recuperare dei valori di esempio dal campo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>No Records</source>
|
||||
<translation>Nessun record presente</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>The query you specified results in zero records being returned. Valid PostgreSQL layers must have at least one feature.</source>
|
||||
<translation>La query utilizzata restituisce valori nulli. Un vettoriale PostgreSQL valido deve avere almeno una geometria.</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>QgsPgQueryBuilderBase</name>
|
||||
@ -4309,6 +4514,17 @@ Per fare questo occorre avere i diritti di scrittura nella cartella dove sono ca
|
||||
<translation>Scala minima secondo la quale il raster deve essere visualizzato</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>QgsScanGeometries</name>
|
||||
<message>
|
||||
<source>Scanning Geometries</source>
|
||||
<translation>Rilevo geometrie</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>textLabel1</source>
|
||||
<translation>testoEtichetta1</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>QgsSiMaDialogBase</name>
|
||||
<message>
|
||||
@ -4366,14 +4582,14 @@ Per fare questo occorre avere i diritti di scrittura nella cartella dove sono ca
|
||||
<source>Outline Width:</source>
|
||||
<translation>Larghezza del tratto del riquadro</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Fill Pattern:</source>
|
||||
<translation>Modello di riempimento:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Clear</source>
|
||||
<translation>Pulisci</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Fill Patterns:</source>
|
||||
<translation>Motivi di riempimento:</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>QgsSpitBase</name>
|
||||
|
5075
i18n/qgis_ja.ts
Normal file
4753
i18n/qgis_pl_PL.ts
Normal file
1273
i18n/qgis_se.ts
5050
i18n/qgis_sk.ts
Normal file
@ -10,7 +10,8 @@ INCLUDEPATH += . ..\..\src \
|
||||
$(GEOS)\include
|
||||
LIBS += ..\..\src\libqgis.lib \
|
||||
$(GDAL)\lib\gdal_i.lib \
|
||||
$(GEOS)\lib\geos.lib
|
||||
$(GEOS)\lib\geos.lib \
|
||||
$(POSTGRESQL)\src\interfaces\libpq\Release\libpq.lib
|
||||
CONFIG += qt dll thread
|
||||
DLLDESTDIR= ..\..\win_build\lib\qgis
|
||||
|
||||
|
@ -91,13 +91,14 @@ void Plugin::initGui()
|
||||
// add a menu with 2 items
|
||||
QPopupMenu *pluginMenu = new QPopupMenu(qgisMainWindowPointer);
|
||||
|
||||
pluginMenu->insertItem(QIconSet(icon),"&CopyrightLabel", this, SLOT(run()));
|
||||
|
||||
int menuId = pluginMenu->insertItem(QIconSet(icon),"&CopyrightLabel", this, SLOT(run()));
|
||||
pluginMenu->setWhatsThis(menuId, "Creates a copyright label that is displayed on the map canvas.");
|
||||
menuBarPointer = ((QMainWindow *) qgisMainWindowPointer)->menuBar();
|
||||
|
||||
menuIdInt = qGisInterface->addMenu("&Decorations", pluginMenu);
|
||||
// Create the action for tool
|
||||
myQActionPointer = new QAction("Copyright Label", QIconSet(icon), "&Wmi",0, this, "run");
|
||||
myQActionPointer->setWhatsThis("Creates a copyright label that is displayed on the map canvas.");
|
||||
// Connect the action to the run
|
||||
connect(myQActionPointer, SIGNAL(activated()), this, SLOT(run()));
|
||||
// This calls the renderer everytime the cnavas has drawn itself
|
||||
|
@ -11,6 +11,7 @@
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
***************************************************************************/
|
||||
/* $Id$ */
|
||||
#include <iostream>
|
||||
#include <qfiledialog.h>
|
||||
#include <qlineedit.h>
|
||||
|
@ -79,7 +79,9 @@ void QgsPgGeoprocessing::initGui()
|
||||
// add a menu with 2 items
|
||||
QPopupMenu *pluginMenu = new QPopupMenu(qgisMainWindow);
|
||||
|
||||
pluginMenu->insertItem(QIconSet(icon_buffer),"&Buffer Features", this, SLOT(buffer()));
|
||||
int menuId = pluginMenu->insertItem(QIconSet(icon_buffer),"&Buffer Features", this, SLOT(buffer()));
|
||||
pluginMenu->setWhatsThis(menuId, "Create a buffer for a PostgreSQL layer. "
|
||||
"A new layer is created in the database with the buffered features.");
|
||||
// pluginMenu->insertItem("&Unload Geoprocessing Plugin", this, SLOT(unload()));
|
||||
|
||||
menu = ((QMainWindow *) qgisMainWindow)->menuBar();
|
||||
@ -89,6 +91,8 @@ void QgsPgGeoprocessing::initGui()
|
||||
// Create the action for tool
|
||||
bufferAction = new QAction("Buffer features", QIconSet(icon_buffer), "&Buffer",
|
||||
0, this, "buffer");
|
||||
bufferAction->setWhatsThis("Create a buffer for a PostgreSQL layer. "
|
||||
"A new layer is created in the database with the buffered features.");
|
||||
// Connect the action to the zoomPrevous slot
|
||||
connect(bufferAction, SIGNAL(activated()), this, SLOT(buffer()));
|
||||
|
||||
@ -139,6 +143,7 @@ void QgsPgGeoprocessing::buffer()
|
||||
user = user.mid(user.find("=") + 1);
|
||||
|
||||
// show dialog to fetch buffer distrance, new layer name, and option to
|
||||
// add the new layer to the map
|
||||
QgsDlgPgBuffer *bb = new QgsDlgPgBuffer(qI);
|
||||
|
||||
// set the label
|
||||
@ -321,10 +326,17 @@ void QgsPgGeoprocessing::buffer()
|
||||
// host=localhost dbname=gis_data user=gsherman password= table=public.alaska (the_geom)
|
||||
// Using addVectorLayer requires that be add a table=xxxx to the layer path since
|
||||
// addVectorLayer is generic for all supported layers
|
||||
qI->addVectorLayer(newLayerSource + "table=" + bb->schema() + "." + bb->bufferLayerName()
|
||||
+ " (" + bb->geometryColumn() + ")",
|
||||
bb->schema() + "." + bb->bufferLayerName() + " (" + bb->geometryColumn() + ")",
|
||||
"postgres");
|
||||
std::cerr << "Building dataURI string" << std::endl;
|
||||
QString dataURI = newLayerSource + "table=" + bb->schema() + "." + bb->bufferLayerName()
|
||||
+ " (" + bb->geometryColumn() + ")\n" +
|
||||
bb->schema() + "." + bb->bufferLayerName() + " (" + bb->geometryColumn() + ")\n" +
|
||||
"postgres";
|
||||
|
||||
std::cerr << "Passing to addVectorLayer:\n" << dataURI << std::endl;
|
||||
qI->addVectorLayer(newLayerSource + "table=" + bb->schema() + "." + bb->bufferLayerName()
|
||||
+ " (" + bb->geometryColumn() + ")",
|
||||
bb->schema() + "." + bb->bufferLayerName() + " (" + bb->geometryColumn() + ")",
|
||||
"postgres");
|
||||
|
||||
}
|
||||
} else {
|
||||
|
@ -7,7 +7,8 @@ INCLUDEPATH += . ..\..\src \
|
||||
$(GEOS)\include
|
||||
LIBS += ..\..\src\libqgis.lib \
|
||||
$(GDAL)\lib\gdal_i.lib \
|
||||
$(GEOS)\lib\geos.lib
|
||||
$(GEOS)\lib\geos.lib \
|
||||
$(POSTGRESQL)\src\interfaces\libpq\Release\libpq.lib
|
||||
|
||||
DLLDESTDIR= ..\..\win_build\lib\qgis
|
||||
CONFIG += qt dll thread rtti
|
||||
|
@ -20,7 +20,11 @@
|
||||
#include <qsettings.h>
|
||||
|
||||
|
||||
QgsGPSDeviceDialog::QgsGPSDeviceDialog(BabelMap& devices) : mDevices(devices) {
|
||||
QgsGPSDeviceDialog::QgsGPSDeviceDialog(BabelMap& devices) :
|
||||
mDevices(devices),
|
||||
QgsGPSDeviceDialogBase(0, 0, true ) //ensure dialog is openened modal
|
||||
|
||||
{
|
||||
slotUpdateDeviceList();
|
||||
}
|
||||
|
||||
|
@ -8,8 +8,8 @@
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>482</width>
|
||||
<height>252</height>
|
||||
<width>488</width>
|
||||
<height>405</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="sizePolicy">
|
||||
@ -23,7 +23,7 @@
|
||||
<property name="caption">
|
||||
<string>GPS Device Editor</string>
|
||||
</property>
|
||||
<property name="modal">
|
||||
<property name="modal" stdset="0">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<grid>
|
||||
|
@ -102,13 +102,15 @@ void QgsGPSPlugin::initGui()
|
||||
// add a menu with 2 items
|
||||
QPopupMenu *pluginMenu = new QPopupMenu(mMainWindowPointer);
|
||||
pluginMenu->insertItem(QIconSet(icon),"&Gps Tools", this, SLOT(run()));
|
||||
pluginMenu->insertItem("&Create new GPX layer", this, SLOT(createGPX()));
|
||||
int menuId = pluginMenu->insertItem("&Create new GPX layer", this, SLOT(createGPX()));
|
||||
pluginMenu->setWhatsThis(menuId, "Creates a new GPX layer and displays it on the map canvas");
|
||||
mMenuBarPointer = ((QMainWindow *) mMainWindowPointer)->menuBar();
|
||||
mMenuId = mQGisInterface->addMenu("&Gps", pluginMenu);
|
||||
|
||||
// add an action to the toolbar
|
||||
mQActionPointer = new QAction("Gps Tools", QIconSet(icon), "&Wmi",0,
|
||||
this, "run");
|
||||
mQActionPointer->setWhatsThis( "Creates a new GPX layer and displays it on the map canvas");
|
||||
connect(mQActionPointer, SIGNAL(activated()), this, SLOT(run()));
|
||||
mQGisInterface->addToolBarIcon(mQActionPointer);
|
||||
}
|
||||
|
@ -56,7 +56,7 @@ extern "C" {
|
||||
#include "qgsgrassattributes.h"
|
||||
|
||||
QgsGrassAttributes::QgsGrassAttributes ( QgsGrassEdit *edit, QgsGrassProvider *provider, int line,
|
||||
QWidget * parent, const char * name, WFlags f ) :QgsGrassAttributesBase ( parent, name, f )
|
||||
QWidget * parent, const char * name, WFlags f ) :QgsGrassAttributesBase ( parent, name, f)
|
||||
{
|
||||
#ifdef QGISDEBUG
|
||||
std::cerr << "QgsGrassAttributes()" << std::endl;
|
||||
@ -65,7 +65,7 @@ QgsGrassAttributes::QgsGrassAttributes ( QgsGrassEdit *edit, QgsGrassProvider *p
|
||||
mEdit = edit;
|
||||
mProvider = provider;
|
||||
mLine = line;
|
||||
|
||||
|
||||
resultLabel->setText ( "" );
|
||||
|
||||
// Remove old
|
||||
@ -167,7 +167,7 @@ void QgsGrassAttributes::setCat ( int tab, const QString & name, int cat )
|
||||
}
|
||||
|
||||
void QgsGrassAttributes::addAttribute ( int tab, const QString &name, const QString &value,
|
||||
const QString &type )
|
||||
const QString &type )
|
||||
{
|
||||
#ifdef QGISDEBUG
|
||||
std::cerr << "QgsGrassAttributes::addAttribute(): " << name << ": " << value << std::endl;
|
||||
@ -207,34 +207,34 @@ void QgsGrassAttributes::updateAttributes ( )
|
||||
QTable *tb = (QTable *) tabCats->currentPage();
|
||||
|
||||
if ( tb->numRows() > 2 ) {
|
||||
QString sql;
|
||||
|
||||
for ( int i = 2; i < tb->numRows(); i++ ) {
|
||||
if ( i > 2 ) sql.append (", ");
|
||||
|
||||
if ( tb->text(i, 2) == "int" || tb->text(i, 2) == "double" ) {
|
||||
sql.append ( tb->text(i, 0) + " = " + tb->text(i, 1) );
|
||||
} else {
|
||||
QString val = tb->text(i, 1);
|
||||
val.replace("'","''");
|
||||
sql.append ( tb->text(i, 0) + " = '" + tb->text(i, 1) + "'" );
|
||||
}
|
||||
}
|
||||
QString sql;
|
||||
|
||||
for ( int i = 2; i < tb->numRows(); i++ ) {
|
||||
if ( i > 2 ) sql.append (", ");
|
||||
|
||||
if ( tb->text(i, 2) == "int" || tb->text(i, 2) == "double" ) {
|
||||
sql.append ( tb->text(i, 0) + " = " + tb->text(i, 1) );
|
||||
} else {
|
||||
QString val = tb->text(i, 1);
|
||||
val.replace("'","''");
|
||||
sql.append ( tb->text(i, 0) + " = '" + tb->text(i, 1) + "'" );
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef QGISDEBUG
|
||||
std::cerr << "sql: " << sql << std::endl;
|
||||
#endif
|
||||
#ifdef QGISDEBUG
|
||||
std::cerr << "sql: " << sql << std::endl;
|
||||
#endif
|
||||
|
||||
QString *error = mProvider->updateAttributes ( tb->text(0,1).toInt(), tb->text(1,1).toInt(), sql );
|
||||
QString *error = mProvider->updateAttributes ( tb->text(0,1).toInt(), tb->text(1,1).toInt(), sql );
|
||||
|
||||
if ( !error->isEmpty() ) {
|
||||
QMessageBox::warning( 0, "Warning", *error );
|
||||
resultLabel->setText ( "ERROR" );
|
||||
} else {
|
||||
resultLabel->setText ( "OK" );
|
||||
}
|
||||
if ( !error->isEmpty() ) {
|
||||
QMessageBox::warning( 0, "Warning", *error );
|
||||
resultLabel->setText ( "ERROR" );
|
||||
} else {
|
||||
resultLabel->setText ( "OK" );
|
||||
}
|
||||
|
||||
delete error;
|
||||
delete error;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -35,8 +35,8 @@ class QgsGrassAttributes: public QgsGrassAttributesBase
|
||||
public:
|
||||
//! Constructor
|
||||
QgsGrassAttributes ( QgsGrassEdit *edit, QgsGrassProvider *provider, int line,
|
||||
QWidget * parent = 0, const char * name = 0,
|
||||
WFlags f = Qt::WType_Dialog | Qt::WStyle_Customize | Qt::WStyle_Tool );
|
||||
QWidget * parent = 0, const char * name = 0,
|
||||
WFlags f = Qt::WStyle_Customize | Qt::WStyle_DialogBorder | Qt::WStyle_Title | Qt::WStyle_Dialog | Qt::WStyle_Tool);
|
||||
|
||||
//! Destructor
|
||||
~QgsGrassAttributes();
|
||||
|
@ -121,27 +121,31 @@ void QgsGrassPlugin::initGui()
|
||||
// Check GISBASE
|
||||
char *gb = getenv("GISBASE");
|
||||
if ( !gb ) {
|
||||
QMessageBox::warning( 0, "Warning", "Enviroment variable 'GISBASE' is not set,\nGRASS data "
|
||||
"cannot be used.\nSet 'GISBASE' and restart QGIS.\nGISBASE is full path to the\n"
|
||||
"directory where GRASS is installed." );
|
||||
return;
|
||||
QMessageBox::warning( 0, "Warning", "Enviroment variable 'GISBASE' is not set,\nGRASS data "
|
||||
"cannot be used.\nSet 'GISBASE' and restart QGIS.\nGISBASE is full path to the\n"
|
||||
"directory where GRASS is installed." );
|
||||
return;
|
||||
}
|
||||
|
||||
QString gbs ( gb );
|
||||
QFileInfo gbi ( gbs );
|
||||
if ( !gbi.exists() ) {
|
||||
QMessageBox::warning( 0, "Warning", "GISBASE:\n'" + gbs + "'\ndoes not exist,\n"
|
||||
"GRASS data cannot be used." );
|
||||
return;
|
||||
QMessageBox::warning( 0, "Warning", "GISBASE:\n'" + gbs + "'\ndoes not exist,\n"
|
||||
"GRASS data cannot be used." );
|
||||
return;
|
||||
}
|
||||
|
||||
mCanvas = qGisInterface->getMapCanvas();
|
||||
|
||||
QPopupMenu *pluginMenu = new QPopupMenu(qgisMainWindowPointer);
|
||||
|
||||
pluginMenu->insertItem(QIconSet(icon_add_vector),"Add Grass &Vector", this, SLOT(addVector()));
|
||||
pluginMenu->insertItem(QIconSet(icon_add_raster),"Add Grass &Raster", this, SLOT(addRaster()));
|
||||
pluginMenu->insertItem(QIconSet(icon_grass_edit),"&Edit Grass Vector", this, SLOT(edit()));
|
||||
int menuId = pluginMenu->insertItem(QIconSet(icon_add_vector),"Add Grass &Vector", this,
|
||||
SLOT(addVector()));
|
||||
pluginMenu->setWhatsThis(menuId, "Add a GRASS vector layer to the map canvas.");
|
||||
menuId = pluginMenu->insertItem(QIconSet(icon_add_raster),"Add Grass &Raster", this, SLOT(addRaster()));
|
||||
pluginMenu->setWhatsThis(menuId, "Add a GRASS raster layer to the map canvas.");
|
||||
menuId = pluginMenu->insertItem(QIconSet(icon_grass_edit),"&Edit Grass Vector", this, SLOT(edit()));
|
||||
pluginMenu->setWhatsThis(menuId, "Edit a GRASS vector layer");
|
||||
|
||||
menuBarPointer = ((QMainWindow *) qgisMainWindowPointer)->menuBar();
|
||||
|
||||
@ -149,23 +153,25 @@ void QgsGrassPlugin::initGui()
|
||||
|
||||
// Create the action for tool
|
||||
QAction *addVectorAction = new QAction("Add GRASS vector layer", QIconSet(icon_add_vector),
|
||||
"Add GRASS vector layer",0, this, "addVector");
|
||||
"Add GRASS vector layer",0, this, "addVector");
|
||||
addVectorAction->setWhatsThis("Adds a GRASS vector layer to the map canvas");
|
||||
QAction *addRasterAction = new QAction("Add GRASS raster layer", QIconSet(icon_add_raster),
|
||||
"Add GRASS raster layer",0, this, "addRaster");
|
||||
|
||||
"Add GRASS raster layer",0, this, "addRaster");
|
||||
addRasterAction->setWhatsThis("Adds a GRASS raster layer to the map canvas");
|
||||
mRegionAction = new QAction("Display Current Grass Region", QIconSet(icon_grass_region),
|
||||
"Display Current Grass Region",0, this, "region", true);
|
||||
"Display Current Grass Region",0, this, "region", true);
|
||||
mRegionAction->setWhatsThis("Displays the current GRASS region as a rectangle on the map canvas");
|
||||
QAction *editRegionAction = new QAction("Edit Current Grass Region", QIconSet(icon_grass_region_edit),
|
||||
"Edit Current Grass Region",0, this, "editRegion");
|
||||
|
||||
"Edit Current Grass Region",0, this, "editRegion");
|
||||
editRegionAction->setWhatsThis("Edit the current GRASS region");
|
||||
QAction *editAction = new QAction("Edit Grass Vector layer", QIconSet(icon_grass_edit),
|
||||
"Edit Grass Vector layer",0, this, "edit");
|
||||
|
||||
"Edit Grass Vector layer",0, this, "edit");
|
||||
editAction->setWhatsThis("Edit the currently selected GRASS vector layer.");
|
||||
if ( !QgsGrass::activeMode() ) {
|
||||
mRegionAction->setEnabled(false);
|
||||
editRegionAction->setEnabled(false);
|
||||
mRegionAction->setEnabled(false);
|
||||
editRegionAction->setEnabled(false);
|
||||
} else {
|
||||
mRegionAction->setOn(true);
|
||||
mRegionAction->setOn(true);
|
||||
}
|
||||
|
||||
// Connect the action
|
||||
@ -201,23 +207,23 @@ void QgsGrassPlugin::addVector()
|
||||
|
||||
QgsGrassSelect *sel = new QgsGrassSelect(QgsGrassSelect::VECTOR );
|
||||
if ( sel->exec() ) {
|
||||
uri = sel->gisdbase + "/" + sel->location + "/" + sel->mapset + "/" + sel->map + "/" + sel->layer;
|
||||
uri = sel->gisdbase + "/" + sel->location + "/" + sel->mapset + "/" + sel->map + "/" + sel->layer;
|
||||
}
|
||||
#ifdef QGISDEBUG
|
||||
std::cerr << "plugin URI: " << uri << std::endl;
|
||||
#endif
|
||||
if ( uri.length() == 0 ) {
|
||||
std::cerr << "Nothing was selected" << std::endl;
|
||||
return;
|
||||
std::cerr << "Nothing was selected" << std::endl;
|
||||
return;
|
||||
} else {
|
||||
#ifdef QGISDEBUG
|
||||
std::cout << "Add new vector layer" << std::endl;
|
||||
std::cout << "Add new vector layer" << std::endl;
|
||||
#endif
|
||||
// create vector name: vector layer
|
||||
int pos = uri.findRev('/');
|
||||
pos = uri.findRev('/', pos-1);
|
||||
QString name = uri.right( uri.length() - pos - 1 );
|
||||
name.replace('/', ' ');
|
||||
// create vector name: vector layer
|
||||
int pos = uri.findRev('/');
|
||||
pos = uri.findRev('/', pos-1);
|
||||
QString name = uri.right( uri.length() - pos - 1 );
|
||||
name.replace('/', ' ');
|
||||
|
||||
qGisInterface->addVectorLayer( uri, name, "grass");
|
||||
}
|
||||
@ -232,30 +238,30 @@ void QgsGrassPlugin::addRaster()
|
||||
|
||||
QgsGrassSelect *sel = new QgsGrassSelect(QgsGrassSelect::RASTER );
|
||||
if ( sel->exec() ) {
|
||||
QString element;
|
||||
if ( sel->selectedType == QgsGrassSelect::RASTER ) {
|
||||
element = "cellhd";
|
||||
} else { // GROUP
|
||||
element = "group";
|
||||
}
|
||||
|
||||
uri = sel->gisdbase + "/" + sel->location + "/" + sel->mapset + "/" + element + "/" + sel->map;
|
||||
QString element;
|
||||
if ( sel->selectedType == QgsGrassSelect::RASTER ) {
|
||||
element = "cellhd";
|
||||
} else { // GROUP
|
||||
element = "group";
|
||||
}
|
||||
|
||||
uri = sel->gisdbase + "/" + sel->location + "/" + sel->mapset + "/" + element + "/" + sel->map;
|
||||
}
|
||||
#ifdef QGISDEBUG
|
||||
std::cerr << "plugin URI: " << uri << std::endl;
|
||||
#endif
|
||||
if ( uri.length() == 0 ) {
|
||||
std::cerr << "Nothing was selected" << std::endl;
|
||||
return;
|
||||
std::cerr << "Nothing was selected" << std::endl;
|
||||
return;
|
||||
} else {
|
||||
#ifdef QGISDEBUG
|
||||
std::cout << "Add new raster layer" << std::endl;
|
||||
std::cout << "Add new raster layer" << std::endl;
|
||||
#endif
|
||||
// create raster name
|
||||
int pos = uri.findRev('/');
|
||||
pos = uri.findRev('/', pos-1);
|
||||
QString name = uri.right( uri.length() - pos - 1 );
|
||||
name.replace('/', ' ');
|
||||
// create raster name
|
||||
int pos = uri.findRev('/');
|
||||
pos = uri.findRev('/', pos-1);
|
||||
QString name = uri.right( uri.length() - pos - 1 );
|
||||
name.replace('/', ' ');
|
||||
|
||||
qGisInterface->addRasterLayer( uri );
|
||||
}
|
||||
@ -265,18 +271,17 @@ void QgsGrassPlugin::addRaster()
|
||||
void QgsGrassPlugin::edit()
|
||||
{
|
||||
if ( QgsGrassEdit::isRunning() ) {
|
||||
QMessageBox::warning( 0, "Warning", "GRASS Edit is already running." );
|
||||
return;
|
||||
QMessageBox::warning( 0, "Warning", "GRASS Edit is already running." );
|
||||
return;
|
||||
}
|
||||
|
||||
QgsGrassEdit *ed = new QgsGrassEdit( qgisMainWindowPointer, qGisInterface, qgisMainWindowPointer, 0,
|
||||
Qt::WType_Dialog );
|
||||
QgsGrassEdit *ed = new QgsGrassEdit( qgisMainWindowPointer, qGisInterface, qgisMainWindowPointer, 0, Qt::WType_Dialog );
|
||||
|
||||
if ( ed->isValid() ) {
|
||||
ed->show();
|
||||
mCanvas->refresh();
|
||||
mCanvas->refresh();
|
||||
} else {
|
||||
delete ed;
|
||||
delete ed;
|
||||
}
|
||||
}
|
||||
|
||||
@ -296,9 +301,9 @@ void QgsGrassPlugin::displayRegion(QPainter *painter)
|
||||
QString mapset = QgsGrass::getDefaultMapset();
|
||||
|
||||
if ( gisdbase.isEmpty() || location.isEmpty() || mapset.isEmpty() ) {
|
||||
QMessageBox::warning( 0, "Warning", "GISDBASE, LOCATION_NAME or MAPSET is not set, "
|
||||
"cannot display current region." );
|
||||
return;
|
||||
QMessageBox::warning( 0, "Warning", "GISDBASE, LOCATION_NAME or MAPSET is not set, "
|
||||
"cannot display current region." );
|
||||
return;
|
||||
}
|
||||
|
||||
QgsGrass::setLocation ( gisdbase, location );
|
||||
@ -307,8 +312,8 @@ void QgsGrassPlugin::displayRegion(QPainter *painter)
|
||||
char *err = G__get_window ( &window, "", "WIND", (char *) mapset.latin1() );
|
||||
|
||||
if ( err ) {
|
||||
QMessageBox::warning( 0, "Warning", "Cannot read current region: " + QString(err) );
|
||||
return;
|
||||
QMessageBox::warning( 0, "Warning", "Cannot read current region: " + QString(err) );
|
||||
return;
|
||||
}
|
||||
|
||||
std::vector<QgsPoint> points;
|
||||
@ -341,13 +346,13 @@ void QgsGrassPlugin::changeRegion(void)
|
||||
#endif
|
||||
|
||||
if ( QgsGrassRegion::isRunning() ) {
|
||||
QMessageBox::warning( 0, "Warning", "The Region tool is already running." );
|
||||
return;
|
||||
QMessageBox::warning( 0, "Warning", "The Region tool is already running." );
|
||||
return;
|
||||
}
|
||||
|
||||
QgsGrassRegion *reg = new QgsGrassRegion(this, qgisMainWindowPointer, qGisInterface,
|
||||
qgisMainWindowPointer, 0,
|
||||
Qt::WType_Dialog );
|
||||
qgisMainWindowPointer, 0,
|
||||
Qt::WType_Dialog );
|
||||
|
||||
reg->show();
|
||||
}
|
||||
|
@ -107,13 +107,14 @@ void Plugin::initGui()
|
||||
// add a menu with 2 items
|
||||
QPopupMenu *pluginMenu = new QPopupMenu(qgisMainWindowPointer);
|
||||
|
||||
pluginMenu->insertItem(QIconSet(icon),"&GraticuleMaker", this, SLOT(run()));
|
||||
|
||||
int menuId = pluginMenu->insertItem(QIconSet(icon),"&GraticuleMaker", this, SLOT(run()));
|
||||
pluginMenu->setWhatsThis(menuId, "Creates a graticule (grid) and stores the result as a shapefile");
|
||||
menuBarPointer = ((QMainWindow *) qgisMainWindowPointer)->menuBar();
|
||||
|
||||
menuIdInt = qGisInterface->addMenu("&Graticules", pluginMenu);
|
||||
// Create the action for tool
|
||||
myQActionPointer = new QAction("Graticule Creator", QIconSet(icon), "&Wmi",0, this, "run");
|
||||
myQActionPointer->setWhatsThis("Creates a graticule (grid) and stores the result as a shapefile");
|
||||
// Connect the action to the run
|
||||
connect(myQActionPointer, SIGNAL(activated()), this, SLOT(run()));
|
||||
|
||||
|
@ -7,7 +7,8 @@ INCLUDEPATH += . ..\..\src \
|
||||
$(GEOS)\include
|
||||
LIBS += ..\..\src\libqgis.lib \
|
||||
$(GDAL)\lib\gdal_i.lib \
|
||||
$(GEOS)\lib\geos.lib
|
||||
$(GEOS)\lib\geos.lib \
|
||||
$(POSTGRESQL)\src\interfaces\libpq\Release\libpq.lib
|
||||
CONFIG += qt dll thread
|
||||
DLLDESTDIR= ..\..\win_build\lib\qgis
|
||||
|
||||
|
@ -95,13 +95,14 @@ void Plugin::initGui()
|
||||
// add a menu with 2 items
|
||||
QPopupMenu *pluginMenu = new QPopupMenu(qgisMainWindowPointer);
|
||||
|
||||
pluginMenu->insertItem(QIconSet(icon),"&NorthArrow", this, SLOT(run()));
|
||||
|
||||
int menuId = pluginMenu->insertItem(QIconSet(icon),"&NorthArrow", this, SLOT(run()));
|
||||
pluginMenu->setWhatsThis(menuId, "Creates a north arrow that is displayed on the map canvas");
|
||||
menuBarPointer = ((QMainWindow *) qgisMainWindowPointer)->menuBar();
|
||||
|
||||
menuIdInt = qGisInterface->addMenu("&Decorations", pluginMenu);
|
||||
// Create the action for tool
|
||||
myQActionPointer = new QAction("North Arrow", QIconSet(icon), "&Wmi",0, this, "run");
|
||||
myQActionPointer->setWhatsThis("Creates a north arrow that is displayed on the map canvas");
|
||||
// Connect the action to the run
|
||||
connect(myQActionPointer, SIGNAL(activated()), this, SLOT(run()));
|
||||
//render the arrow each time the map is rendered
|
||||
|
@ -106,13 +106,14 @@ void Plugin::initGui()
|
||||
// add a menu with 2 items
|
||||
QPopupMenu *pluginMenu = new QPopupMenu(qgisMainWindowPointer);
|
||||
|
||||
pluginMenu->insertItem(QIconSet(icon),"&ScaleBar", this, SLOT(run()));
|
||||
|
||||
int menuId = pluginMenu->insertItem(QIconSet(icon),"&ScaleBar", this, SLOT(run()));
|
||||
pluginMenu->setWhatsThis(menuId, "Creates a scale bar that is displayed on the map canvas");
|
||||
menuBarPointer = ((QMainWindow *) qgisMainWindowPointer)->menuBar();
|
||||
|
||||
menuIdInt = qGisInterface->addMenu("&Scale Bar", pluginMenu);
|
||||
// Create the action for tool
|
||||
myQActionPointer = new QAction("Scale Bar", QIconSet(icon), "&Wmi",0, this, "run");
|
||||
myQActionPointer->setWhatsThis("Creates a scale bar that is displayed on the map canvas");
|
||||
// Connect the action to the run
|
||||
connect(myQActionPointer, SIGNAL(activated()), this, SLOT(run()));
|
||||
//render the scale bar each time the map is rendered
|
||||
|
@ -7,7 +7,8 @@ INCLUDEPATH += . ..\..\src \
|
||||
$(GEOS)\include
|
||||
LIBS += ..\..\src\libqgis.lib \
|
||||
$(GDAL)\lib\gdal_i.lib \
|
||||
$(GEOS)\lib\geos.lib
|
||||
$(GEOS)\lib\geos.lib \
|
||||
$(POSTGRESQL)\src\interfaces\libpq\Release\libpq.lib
|
||||
CONFIG += qt dll thread debug
|
||||
DLLDESTDIR= ..\..\win_build\lib\qgis
|
||||
|
||||
|
@ -10,8 +10,11 @@
|
||||
#
|
||||
# $Id$
|
||||
|
||||
PREFIX=-DPREFIX=\"$(prefix)\"
|
||||
plugindir = ${pkglibdir}
|
||||
|
||||
plugin_LTLIBRARIES = spitplugin.la
|
||||
bin_PROGRAMS = spit
|
||||
|
||||
|
||||
%.moc.cpp: %.h
|
||||
@ -32,7 +35,8 @@ spit_MOC = qgsspit.moc.cpp \
|
||||
qgsspitbase.moc.cpp \
|
||||
qgsmessageviewerbase.moc.cpp \
|
||||
qgseditreservedwordsbase.moc.cpp \
|
||||
qgseditreservedwordsdialog.moc.cpp
|
||||
qgseditreservedwordsdialog.moc.cpp \
|
||||
qgsscangeometries.moc.cpp
|
||||
|
||||
spit_UI = qgsconnectiondialogbase.h \
|
||||
qgsconnectiondialogbase.cpp \
|
||||
@ -41,12 +45,16 @@ spit_UI = qgsconnectiondialogbase.h \
|
||||
qgsmessageviewerbase.h \
|
||||
qgsmessageviewerbase.cpp \
|
||||
qgseditreservedwordsbase.cpp \
|
||||
qgseditreservedwordsbase.h
|
||||
qgseditreservedwordsbase.h \
|
||||
qgsscangeometries.h \
|
||||
qgsscangeometries.ui.h \
|
||||
qgsscangeometries.cpp
|
||||
|
||||
spit_UIC = qgsconnectiondialogbase.ui \
|
||||
qgsmessageviewerbase.ui \
|
||||
qgsspitbase.ui \
|
||||
qgseditreservedwordsbase.ui
|
||||
qgseditreservedwordsbase.ui \
|
||||
qgsscangeometries.ui
|
||||
|
||||
|
||||
spitplugin_la_SOURCES = qgsspit.cpp \
|
||||
@ -64,6 +72,8 @@ spitplugin_la_SOURCES = qgsspit.cpp \
|
||||
qgseditreservedwordsdialog.cpp \
|
||||
$(spit_UI)
|
||||
|
||||
spit_SOURCES = $(spitplugin_la_SOURCES) ../../src/qgspgutil.cpp main.cpp $(SPIT_UIC) $(spit_MOC)
|
||||
|
||||
nodist_spitplugin_la_SOURCES = $(spit_MOC)
|
||||
|
||||
# UI dependencies
|
||||
@ -82,4 +92,8 @@ spitplugin_la_LDFLAGS = -avoid-version -module
|
||||
spitplugin_la_CXXFLAGS = $(CXXFLAGS) $(EXTRA_CXXFLAGS) $(GDAL_CFLAGS) $(QT_CXXFLAGS) -I$(PG_INC) -I../../src
|
||||
|
||||
|
||||
EXTRA_DIST = $(spit_UIC) icon_spit.xpm spiticon.xpm
|
||||
spit_LDADD = $(QT_LDADD) $(PG_LIB) $(GDAL_LDADD)
|
||||
#spit_LDFLAGS = -avoid-version -module
|
||||
spit_CXXFLAGS = $(CXXFLAGS) $(EXTRA_CXXFLAGS) $(GDAL_CFLAGS) $(QT_CXXFLAGS) -I$(PG_INC) -I../../src
|
||||
|
||||
EXTRA_DIST = $(spit_UIC) icon_spit.xpm spiticon.xpm spit_icons.h
|
||||
|
12
plugins/spit/main.cpp
Normal file
@ -0,0 +1,12 @@
|
||||
#include <qapplication.h>
|
||||
#include "qgsspit.h"
|
||||
|
||||
int main( int argc, char ** argv )
|
||||
{
|
||||
QApplication a( argc, argv );
|
||||
QgsSpit w;
|
||||
w.show();
|
||||
// Moved get schema to constructor so plugins will work w.getSchema();
|
||||
a.connect( &a, SIGNAL( lastWindowClosed() ), &a, SLOT( quit() ) );
|
||||
return a.exec();
|
||||
}
|