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
|
#!/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)
|