forked from MapServer/MapServer
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathshpinfo.py
More file actions
executable file
·67 lines (54 loc) · 1.89 KB
/
shpinfo.py
File metadata and controls
executable file
·67 lines (54 loc) · 1.89 KB
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
#!/usr/bin/env python
""" Extracts basic descriptive information from the shapefile.
"""
import mapscript
import sys
import os
# Utility functions.
def usage():
""" Display usage if program is used incorrectly. """
print "Syntax: %s base_filename" % sys.argv[0]
sys.exit(2)
# Make sure passing in filename argument.
if len(sys.argv) != 2:
usage()
# Make sure can access .shp file, create shapefileObj.
if os.access(sys.argv[1] + ".shp", os.F_OK):
sf_obj = mapscript.shapefileObj(sys.argv[1], -1)
else:
print "Can't access shapefile"
sys.exit(2)
# Dictionary of shapefile types.
types = { 1: 'point',
3: 'arc',
5: 'polygon',
8: 'multipoint' }
# Print out basic information that is part of the shapefile object.
print "Shapefile %s:" % sys.argv[1]
print
print "\ttype: %s" % types[sf_obj.type]
print "\tnumber of features: %i" % sf_obj.numshapes
print "\tbounds: (%f, %f) (%f, %f)" % (sf_obj.bounds.minx,
sf_obj.bounds.miny,
sf_obj.bounds.maxx,
sf_obj.bounds.maxy)
# Including a class to read DBF files.
# If not found, quit because can't do anything else without the dbfreader class.
try:
import dbfreader
except:
# Can't do anymore.
sys.exit(2)
# Create DBF object.
dbf_obj = dbfreader.DBFFile(sys.argv[1] + ".dbf")
# Print out table characteristics.
print ""
print "\tDBF file: %s" % sys.argv[1] + ".dbf"
print "\tnumber of records: %i" % dbf_obj.get_record_count()
print "\tnumber of fields: %i" % len(dbf_obj.get_fields())
print ""
print "\t%-20s %12s %8s %10s" % ("Name", "Type", "Length", "Decimals")
print "\t-----------------------------------------------------"
# Print out field characteristics.
for field in dbf_obj.get_fields():
print "\t%-20s %12s %8d %10d" % (field.get_name(), field.get_type_name(), field.get_len(), field.field_places)