/[thuban]/branches/WIP-pyshapelib-bramz/test/postgissupport.py
ViewVC logotype

Diff of /branches/WIP-pyshapelib-bramz/test/postgissupport.py

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 2471 by bh, Thu Dec 16 14:19:21 2004 UTC revision 2589 by bh, Tue Mar 29 18:36:53 2005 UTC
# Line 1  Line 1 
1  # Copyright (C) 2003, 2004 by Intevation GmbH  # Copyright (C) 2003, 2004, 2005 by Intevation GmbH
2  # Authors:  # Authors:
3  # Bernhard Herzog <[email protected]>  # Bernhard Herzog <[email protected]>
4  #  #
# Line 251  class PostgreSQLServer: Line 251  class PostgreSQLServer:
251               [("gid_offset", 1000)]),               [("gid_offset", 1000)]),
252              ("political", os.path.join("..", "Data", "iceland",              ("political", os.path.join("..", "Data", "iceland",
253                                               "political.shp")),                                               "political.shp")),
254              ("roads", os.path.join("..", "Data", "iceland",              ("roads_multi", os.path.join("..", "Data", "iceland",
255                                           "roads-line.shp")),                                           "roads-line.shp")),
256    
257                # same as roads-multi but using LINESTRING instead of
258                # MULTILINESTRING
259                ("roads", os.path.join("..", "Data", "iceland",
260                                             "roads-line.shp"),
261                 [("force_wkt_type", "LINESTRING")]),
262    
263              # The polygon data as a MULTIPOLYGON geometry type              # The polygon data as a MULTIPOLYGON geometry type
264              ("political_multi", os.path.join("..", "Data", "iceland",              ("political_multi", os.path.join("..", "Data", "iceland",
265                                               "political.shp"),                                               "political.shp"),
# Line 390  class PostGISDatabase: Line 396  class PostGISDatabase:
396              server -- The PostgreSQLServer instance containing the              server -- The PostgreSQLServer instance containing the
397                  database                  database
398    
399              postgis_sql -- Filename of the postgis.sql file with the              postgis_sql -- Filename of the sql file with the postgis
400                  postgis initialization code                  initialization code
401    
402              dbname -- The name of the database              dbname -- The name of the database
403    
# Line 502  def find_postgis_sql(): Line 508  def find_postgis_sql():
508      $bindir/../share/postgresql/.      $bindir/../share/postgresql/.
509    
510      Furthermore, different versions of postgis place the file in      Furthermore, different versions of postgis place the file in
511      slightly different locations.  For instance:      slightly different locations or may even use different names.  For
512        instance:
513    
514        postgis 0.7.5        $datadir/contrib/postgis.sql        postgis 0.7.5        $datadir/contrib/postgis.sql
515        postgis 0.8.1        $datadir/postgis.sql        postgis 0.8.1        $datadir/postgis.sql
516          postgis 1.0.0-rc1    $datadir/lwpostgis.sql
517          postgis 1.0.0-rc4    $datadir/contrib/lwpostgis.sql
518    
519      To support both versions, we look in both places and return the      To support both versions, we look in both places and return the
520      first one found (looking under contrib first).  If the file is not      first one found (looking under contrib first).  If the file is not
# Line 514  def find_postgis_sql(): Line 523  def find_postgis_sql():
523      bindir = run_config_script("pg_config --bindir").strip()      bindir = run_config_script("pg_config --bindir").strip()
524      datadir = os.path.join(bindir, "..", "share", "postgresql")      datadir = os.path.join(bindir, "..", "share", "postgresql")
525      for filename in [os.path.join(datadir, "contrib", "postgis.sql"),      for filename in [os.path.join(datadir, "contrib", "postgis.sql"),
526                       os.path.join(datadir, "postgis.sql")]:                       os.path.join(datadir, "postgis.sql"),
527                         os.path.join(datadir, "lwpostgis.sql"),
528                         os.path.join(datadir, "contrib", "lwpostgis.sql")]:
529          if os.path.exists(filename):          if os.path.exists(filename):
530              return filename              return filename
531    
# Line 629  def coords_to_polygon(coords): Line 640  def coords_to_polygon(coords):
640          poly.append(", ".join(["%r %r" % p for p in ring]))          poly.append(", ".join(["%r %r" % p for p in ring]))
641      return "POLYGON((%s))" % "), (".join(poly)      return "POLYGON((%s))" % "), (".join(poly)
642    
643    def coords_to_linestring(coords):
644        """Return string with a LINESTRING WKT representation of coords"""
645        if len(coords) > 1:
646            raise ValueError("A LINESTRING can only have one arc")
647        return "LINESTRING(%s)" % ", ".join(["%r %r" % p for p in coords[0]])
648    
649  def coords_to_multilinestring(coords):  def coords_to_multilinestring(coords):
650      """Return string with a WKT representation of the arc in coords"""      """Return string with a MULTILINESTRING WKT representation of coords"""
651      poly = []      poly = []
652      for ring in coords:      for ring in coords:
653          poly.append(", ".join(["%r %r" % p for p in ring]))          poly.append(", ".join(["%r %r" % p for p in ring]))
# Line 645  def coords_to_multipolygon(coords): Line 662  def coords_to_multipolygon(coords):
662    
663  wkt_converter = {  wkt_converter = {
664      "POINT": coords_to_point,      "POINT": coords_to_point,
665        "LINESTRING": coords_to_linestring,
666      "MULTILINESTRING": coords_to_multilinestring,      "MULTILINESTRING": coords_to_multilinestring,
667      "POLYGON": coords_to_polygon,      "POLYGON": coords_to_polygon,
668      "MULTIPOLYGON": coords_to_multipolygon,      "MULTIPOLYGON": coords_to_multipolygon,
# Line 663  def upload_shapefile(filename, db, table Line 681  def upload_shapefile(filename, db, table
681      tablename -- The name of the table to create and into which the data      tablename -- The name of the table to create and into which the data
682                  is to be inserted                  is to be inserted
683    
684      force_wkt_type -- If given the real WKT geometry type to use instead      force_wkt_type -- If given and not None, this is used as the WKT
685                  of the default that would be chosen based on the type of                  geometry type to use instead of the default that would
686                  the shapefile                  be chosen based on the type of the shapefile
687    
688      gid_offset -- A number to add to the shapeid to get the value for      gid_offset -- A number to add to the shapeid to get the value for
689                  the gid column (default 0)                  the gid column (default 0)

Legend:
Removed from v.2471  
changed lines
  Added in v.2589

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26