File: shpinfo.py

package info (click to toggle)
mapserver 5.0.3-3%2Blenny7
  • links: PTS, VCS
  • area: main
  • in suites: lenny
  • size: 13,556 kB
  • ctags: 12,645
  • sloc: ansic: 168,024; cs: 8,534; python: 4,618; sh: 4,213; cpp: 4,059; perl: 2,781; makefile: 787; lex: 564; java: 415; yacc: 334; tcl: 158; ruby: 53
file content (67 lines) | stat: -rwxr-xr-x 1,936 bytes parent folder | download | duplicates (11)
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)