forked from GPSBabel/gpsbabel
-
Notifications
You must be signed in to change notification settings - Fork 0
/
shapelib.html
235 lines (169 loc) · 9.63 KB
/
shapelib.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
<html>
<head>
<title>Shapefile C Library V1.2</title>
<link href="http://www.maptools.org/maptools.css" rel="stylesheet" type="text/css">
</head>
<body>
<h1>Shapefile C Library V1.2</h1>
<h2>Purpose</h2>
The Shapefile C Library provides the ability to write simple C programs
for reading, writing and updating (to a limited extent) ESRI Shapefiles,
and the associated attribute file (.dbf).<p>
<h2>Supporting Information</h2>
<ul>
<li> <a href="shp_api.html">Shapefile API Docs</a>
<li> <a href="dbf_api.html">DBF/xBase API Docs</a>
<li> <a href="shapelib-tools.html">Shapefile Tools Docs</a>
<li> <a href="release.html">Release Notes</a>
<li> <a href="manifest.html">Shapelib File Manifest</a>
<li> <a href="license.html">Shapelib Licensing Terms</a>
</ul>
<h2>What is a Shapefile?</h2>
If you don't know, you probably don't need this library. The Shapefile
format is a working and interchange format promulagated by
<a href="http://www.esri.com/">ESRI</a> for simple vector data with attributes.
<p>
An excellent <a href="dl/shapefile.pdf">white paper</a> on the shapefile format
is available from ESRI,
but it is .pdf format, so you will need Adobe Acrobat to browse it.<p>
The file format actually consists of three files.<p>
<pre>
XXX.shp - holds the actual vertices.
XXX.shx - hold index data pointing to the structures in the .shp file.
XXX.dbf - holds the attributes in xBase (dBase) format.
</pre>
<h2>Download</h2>
Source code, and some other odds and ends can be downloaded from
<a href="http://download.osgeo.org/shapelib">http://download.osgeo.org/shapelib</a> or <a href="http://shapelib.maptools.org/dl">http://shapelib.maptools.org/dl</a>.<p>
Shapelib is available for anonymous CVS access:
<pre>
cvs -d :pserver:[email protected]:/cvs/maptools/cvsroot login
Password: (hit enter)
cvs -d :pserver:[email protected]:/cvs/maptools/cvsroot co shapelib
</pre>
<h2>Bugs, Maintainance and Support</h2>
This library is maintained by <a href="http://pobox.com/~warmerdam">Frank
Warmerdam</a>. Please send me bug reports, patches and suggestions for the
library via the <a href="http://bugzilla.maptools.org/enter_bug.cgi?product=Shapelib">maptools.org Bugzilla</a>. Shapelib bugs can also be
<a href="http://bugzilla.maptools.org/query.cgi?product=Shapelib">queried</a>.
<p>
Shapelib is hosted at
<a href="http://shapelib.maptools.org">shapelib.maptools.org</a>. A mailing
list for discussion of how to use shapelib, and announcing new releases
<a href="http://lists.maptools.org/mailman/listinfo/shapelib/">is
available</a>. To only find out about new releases of Shapelib select the
"<i>Subscribe to new releases</i>" option from the link at
<a href="http://freshmeat.net/projects/shapelib/">Freshmeat</a>.<p>
<h2>Credits</h2>
I didn't start this section anywhere near soon enough, so alot of earlier
contributors to Shapelib are lost in pre-history.
<ul>
<li> Bill Miller (NY-DOT) for shputils.c
<li> Carl Anderson for the contents of the contrib directory, and
the "tuple" additions to dbfopen.c.
<li> Andrea Giacomelli for patches for dbfopen.c.
<li> Doug Matthews for portability improvements.
<li> Jan-Oliver Wagner for convincing me to make it available under LGPL,
shared library support, and various other patches.
<li> Dennis Christopher (of Avenza) for testing and bug fixes.
<li> Miko Syrjä (of 3D-system Oy) for a record size bug fix.
<li> Steven Lime and Curtis Hill for help with NULL shapes.
<li> Jim Matthews for support of NULL attributes in dbf files.
<li> <a href="http://www.pcigeomatics.com/">PCI Geomatics</a> who let me
release a modified version of their shapefile code in the beginning and
who hosted shapelib for years.
</ul>
<h2>In Memorium</h2>
I would like to dedicate Shapelib to the memory of Sol Katz. While I never
met him in person, his generous contributions to the GIS community took
many forms, including free distribution of a variety of GIS translators
with source. The fact that he used this Shapelib in some of his utilities,
and thanked me was a great encouragement to me. I hope I can do his memory
honour by trying to contribute in a similar fashion.<p>
<h2>Portability</h2>
The Shapefile C Library should port easily to 32bit systems with ANSI C
compilers. It should work on 64 bit architectures (such as the DEC AXP).<p>
Care should also be taken to pass the binary access flag into SHPOpen()
and DBFOpen() when operating on systems with special text file translation
such as MSDOS.<p>
The shputils.c module is contributed, and may not take the same approach
to portability as the rest of the package.<p>
On Linux, and most unix systems it should be possible to build and
install shapefile support as a shared library using the "lib" and "lib_install"
targets of the Makefile. Note that this Makefile doesn't use autoconf
mechanisms and will generally require some hand tailoring for your environment.
<h2>Limitations</h2>
<ul>
<li> You can't modify the vertices of existing structures (though you
can update the attributes of existing structures, and create new
structures).<p>
<li> Not written in such a way as to be particularly fast. This is
particularly true of the 1.2 API. For applications more concerned with
speed it may be worth using the V1.1 API.<p>
<li> Doesn't set the last access time properly in the .dbf files.<p>
<li> There is no way to synchronize information to the file except to close it.
<p>
<li> Poor error checking and reporting.<p>
<li> Not professionally supported (well it can be, if you want to pay).<p>
<li> Some aspects of xBase files not supported, though I believe they are
not used by ESRI.<p>
<li> The application must keep the .dbf file in sync with the .shp/.shx
files through appropriate use of the DBF and SHP APIs.<p>
<li> No support for the undocumented .sbn/.sbx spatial index files.<p>
</ul>
<h2>Other Shapefile Resources</h2>
<ul>
<li> <a href="dl/shapefile.pdf">Shapefile Format Specifications (pdf)</a><p>
<li> <a href="http://www.clicketyclick.dk/databases/xbase/format/">Xbase (.dbf) File Format Description</a>. <p>
<li> <a href="codepage.html">Language ID / Code Page mappings</a><p>
<li> Shapelib is used within the multiformat
<a href="http://ogr.maptools.org/">OGR</a> library. If you are looking for a
high level C++ library with support for many geospatial vector formats you
might want to check it out.<p>
<li> Ari Jolma has produced an initial <b>perl</b> binding on top of shapelib,
which can be found at CPAN as Geo::ShapeFile under the
<a href="http://www.cpan.org/modules/by-module/Geo/">Geo</a> module.
<p>
<li> Bernhard Herzog has produced <b>python</b> bindings for Shapelib with
SWIG, available at <a href="http://ftp.intevation.de/users/bh/pyshapelib/">http://ftp.intevation.de/users/bh/pyshapelib</a>. A new version not using swig is
available as <a href="http://wald.intevation.org/plugins/scmsvn/viewcvs.php/trunk/thuban/libraries/pyshapelib/?root=thuban">part of Thuban</a>.<p>
<li> <a href="http://www.triplexware.huckfinn.de/shpapi.html">Delphi</a>
bindings for Shapelib courtesy of Alexander Weidauer.<p>
<li> Miguel Filgueiras has implemented
<a href="http://www.ncc.up.pt/gpsmanshp/">Tcl</a> bindings for Shapelib
as part of <a href="http://www.ncc.up.pt/gpsman/">GPSMan</a>.<p>
<li> David Gancarz has implemented a Microsoft
<a href="dl/contrib/DotNetArchive.zip">.NET wrapper</a> for
Shapelib. An example of using shapelib with VB6 is also icluded in the .NET wrapper project file.<p>
<li> Andrey Hristov (php at hristov dot com) has developed a PHP extension
based on Shapelib. It can be found in CVS at http://cvs.php.net/pecl/shp.<p>
<li> Toyoda Eizi has developed Ruby bindings found at
<a href="http://sourceforge.net/projects/ruby-shapelib">http://sourceforge.net/projects/ruby-shapelib</a>.<p>
<li> Davide Cesari has developed FORTRAN bindings that can be found at
<a href"http://www.webalice.it/o.drofa/davide/shapelib-fortran/">
http://www.webalice.it/o.drofa/davide/shapelib-fortran</a>.
<li> Jan-Oliver Wagner has implemented a commandline program
(<b>gen2shp</b>) for producing shapefiles from Arc/Info Generate format ASCII
files. He maintains a <a href="http://intevation.de/~jan/gen2shp">web page</a> for his work. <p>
<li> Tom Russo has implemented a shpcs2cs program, which reprojects shapefiles
using arguments similar to the PROJ.4 cs2cs program including datum conversion.
Use as an alternate to the contrib/shpproj which doesn't do datums. It is
available at the bottom of Tom's <a href="http://www.swcp.com/~russo/shape_web/">Xastir Shapefile Resources</a> page. <p>
<li>
Andrew Williamson's
<a href="http://www.geocities.com/SiliconValley/Haven/2295/useful.html">Useful
Scripts and Stuff</a> page for ArcView, which includes ShapeChecker.<p>
<li> The University of Bonn <a href="http://katla.giub.uni-bonn.de/sfjava/">
sf4java</a> project apparently includes Java classes for reading Shapefiles.<p>
<li> The <a href="http://gis.esri.com/arcscripts/details.cfm?CFGRIDKEY=628102085">ShapeIO2</a> Visual Basic libraries may be of interest to those wanting
VB access to Shapefiles. Also available <a href="http://shapelib.maptools.org/dl/contrib/ShapeIO2.zip">locally</a>.<p>
<li> The <a href="http://arcscripts.esri.com/details.asp?dbid=11810">ShapeFile Read/Write OCX</a> is another option for Visual Basic programmers.<p>
<li> <a href="http://www.casa.ucl.ac.uk/sanjay/software_isovistanalyst.htm">Isovist Analyst</a> is a sort-of-free isovist generating extension for
ArcView using shapelib.<p>
<li> <a href="http://www.obviously.com/gis/shpdiff/">shpdiff</a> utility
by Bryce Nesbitt.<p>
<li> <a href="http://www.aequometer.de/">Aequometer</a>: a program for
MS Excel to calculate the area of polygons and export as shapefiles.<p>
</ul>
</body>
</html>