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
|
#!/usr/bin/env python
import fnmatch
import os
import shutil
from subprocess import PIPE, Popen
from nose.tools import eq_
from nose.plugins.skip import SkipTest
import mapnik
from .utilities import execution_path, run_all
def setup():
# All of the paths used are relative, if we run the tests
# from another directory we need to chdir()
os.chdir(execution_path('.'))
def test_shapeindex():
if not os.path.exists('../data/shp/'):
raise SkipTest
# first copy shapefiles to tmp directory
source_dir = '../data/shp/'
working_dir = '/tmp/mapnik-shp-tmp/'
if os.path.exists(working_dir):
shutil.rmtree(working_dir)
shutil.copytree(source_dir, working_dir)
matches = []
for root, dirnames, filenames in os.walk('%s' % source_dir):
for filename in fnmatch.filter(filenames, '*.shp'):
matches.append(os.path.join(root, filename))
for shp in matches:
source_file = os.path.join(
source_dir, os.path.relpath(
shp, source_dir))
dest_file = os.path.join(working_dir, os.path.relpath(shp, source_dir))
ds = mapnik.Shapefile(file=source_file)
count = 0
fs = ds.featureset()
try:
while (fs.next()):
count = count + 1
except StopIteration:
pass
stdin, stderr = Popen(
'shapeindex %s' %
dest_file, shell=True, stdout=PIPE, stderr=PIPE).communicate()
ds2 = mapnik.Shapefile(file=dest_file)
count2 = 0
fs = ds.featureset()
try:
while (fs.next()):
count2 = count2 + 1
except StopIteration:
pass
eq_(count, count2)
if __name__ == "__main__":
setup()
exit(run_all(eval(x) for x in dir() if x.startswith("test_")))
|