|
@@ -0,0 +1,65 @@
|
|
|
+#!/usr/bin/env python
|
|
|
+
|
|
|
+############################################################################
|
|
|
+#
|
|
|
+# MODULE: v.in.wfs
|
|
|
+# AUTHOR(S): Markus Neteler. neteler itc it
|
|
|
+# Hamish Bowman (fixes)
|
|
|
+# Converted to Python by Glynn Clements
|
|
|
+# PURPOSE: WFS support
|
|
|
+# COPYRIGHT: (C) 2006, 2007, 2008 Markus Neteler and GRASS Development Team
|
|
|
+#
|
|
|
+# This program is free software under the GNU General Public
|
|
|
+# License (>=v2). Read the file COPYING that comes with GRASS
|
|
|
+# for details.
|
|
|
+#
|
|
|
+# GetFeature example:
|
|
|
+# http://mapserver.gdf-hannover.de/cgi-bin/grassuserwfs?REQUEST=GetFeature&SERVICE=WFS&VERSION=1.0.0
|
|
|
+#############################################################################
|
|
|
+
|
|
|
+#%Module
|
|
|
+#% description: import GetFeature from WFS
|
|
|
+#%End
|
|
|
+#%option
|
|
|
+#% key: wfs
|
|
|
+#% type: string
|
|
|
+#% description: GetFeature URL starting with http
|
|
|
+#%End
|
|
|
+#%option
|
|
|
+#% key: output
|
|
|
+#% type: string
|
|
|
+#% gisprompt: new,vector,vector
|
|
|
+#% description: Vector output map
|
|
|
+#% required : yes
|
|
|
+#%End
|
|
|
+
|
|
|
+import os
|
|
|
+import grass
|
|
|
+import urllib
|
|
|
+
|
|
|
+def main():
|
|
|
+ out = options['output']
|
|
|
+ wfs_url = options['wfs']
|
|
|
+
|
|
|
+ tmp = grass.tempfile()
|
|
|
+ tmpxml = tmp + '.xml'
|
|
|
+
|
|
|
+ grass.message("Retrieving data ...")
|
|
|
+ inf = urllib.urlopen(wfs_url)
|
|
|
+ outf = file(tmpxml, 'wb')
|
|
|
+ while True:
|
|
|
+ s = inf.read()
|
|
|
+ if not s:
|
|
|
+ break
|
|
|
+ outf.write(s)
|
|
|
+ inf.close()
|
|
|
+ outf.close()
|
|
|
+
|
|
|
+ grass.run_command('v.in.ogr', flags = 'o', dsn = tmpxml, out = out)
|
|
|
+ os.remove(tmpxml)
|
|
|
+
|
|
|
+ grass.message("Vector points map <%s> imported from WFS." % out)
|
|
|
+
|
|
|
+if __name__ == "__main__":
|
|
|
+ options, flags = grass.parser()
|
|
|
+ main()
|