<br><br>
<div class="gmail_quote">---------- Forwarded message ----------<br>From: <b class="gmail_sendername">Susana Iraiis Delgado Rodriguez</b> <span dir="ltr">&lt;<a href="mailto:susana.delgado_s@utzmg.edu.mx">susana.delgado_s@utzmg.edu.mx</a>&gt;</span><br>
Date: 2010/10/25<br>Subject: Re: [FWTools] Get projection from shp using GDAL and Python<br>To: David Fawcett &lt;<a href="mailto:david.fawcett@gmail.com">david.fawcett@gmail.com</a>&gt;<br><br><br>
<div>Thank you David for your help! I tried the code and got the next error:</div>
<div> </div>
<div>
<div class="im">Python 2.6.6 (r266:84297, Aug 24 2010, 18:46:32) [MSC v.1500 32 bit (Intel)] on<br>win32<br>Type &quot;help&quot;, &quot;copyright&quot;, &quot;credits&quot; or &quot;license&quot; for more information.<br>
&gt;&gt;&gt; import crawler_shp<br></div>
<div class="im">Traceback (most recent call last):<br>  File &quot;&lt;stdin&gt;&quot;, line 1, in &lt;module&gt;<br>  File &quot;crawler_shp.py&quot;, line 85, in &lt;module&gt;<br></div>    srsText = srsObj.ExportToWkt()<br>
AttributeError: &#39;NoneType&#39; object has no attribute &#39;ExportToWkt&#39;<br>&gt;&gt;&gt;</div>
<div> </div>
<div>Any idea?<br><br></div>
<div class="gmail_quote">2010/10/25 David Fawcett <span dir="ltr">&lt;<a href="mailto:david.fawcett@gmail.com" target="_blank">david.fawcett@gmail.com</a>&gt;</span> 
<div>
<div></div>
<div class="h5"><br>
<blockquote style="BORDER-LEFT: #ccc 1px solid; MARGIN: 0px 0px 0px 0.8ex; PADDING-LEFT: 1ex" class="gmail_quote">My guess is that you are trying to write out the spatial reference<br>object, not the text representation of that object.<br>
<br>Instead of this line:<br>
<div><br> wksht.row(row).write(8, layer.GetSpatialRef())<br><br></div>Try something like:<br><br>srsObj = layer.GetSpatialRef()<br>srsText = srsObj.ExportToWkt()<br>wksht.row(row).write(8, layer.srsText)<br><br><br>This is a little verbose, but should give you the idea.<br>
<br>David.<br>
<div>
<div></div>
<div><br>On Mon, Oct 25, 2010 at 9:38 AM, Susana Iraiis Delgado Rodriguez<br>&lt;<a href="mailto:susana.delgado_s@utzmg.edu.mx" target="_blank">susana.delgado_s@utzmg.edu.mx</a>&gt; wrote:<br>&gt; Hello list!<br>&gt;<br>
&gt; I designed a python module to get all the information I need from a<br>&gt; shapefile. I&#39;ve been using GDAL to work with my script and I already<br>&gt; collected all the information I need. My application saves the values in an<br>
&gt; excel sheet, but I haven&#39;t gotten the projection info, the code is:<br>&gt;<br>&gt; import os, time, socket<br>&gt; from xlwt import Workbook<br>&gt; from osgeo import ogr,gdal,osr<br>&gt; from dbf import *<br>&gt; gdal.AllRegister()<br>
&gt; file_list = []<br>&gt; folders = None<br>&gt;  # look in this (root) folder for files with specified extension<br>&gt; for root, folders, files in os.walk( &quot;C:\\&quot; ):<br>&gt;  file_list.extend(os.path.join(root,fi) for fi in files if<br>
&gt; fi.endswith(&quot;.shp&quot;))<br>&gt; wrkbk = Workbook()<br>&gt; wksht = wrkbk.add_sheet(&#39;shp&#39;)<br>&gt; wksht.row(0).write(0,&#39;ruta&#39;)<br>&gt; wksht.row(0).write(1,&#39;archivo&#39;)<br>&gt; wksht.row(0).write(2,&#39;x_min&#39;)<br>
&gt; wksht.row(0).write(3,&#39;x_max&#39;)<br>&gt; wksht.row(0).write(4,&#39;y_min&#39;)<br>&gt; wksht.row(0).write(5,&#39;y_max&#39;)<br>&gt; wksht.row(0).write(6,&#39;geometria&#39;)<br>&gt; wksht.row(0).write(7,&#39;num_elem&#39;)<br>
&gt; wksht.row(0).write(8,&#39;proyeccion&#39;)<br>&gt; wksht.row(0).write(9,&#39;prj&#39;)<br>&gt; wksht.row(0).write(10,&#39;estructura bd&#39;)<br>&gt; wksht.row(0).write(11,&#39;fecha_modificacion&#39;)<br>&gt; wksht.row(0).write(12,&#39;maquina_host&#39;)<br>
&gt; wksht.row(0).write(13,&#39;usuario&#39;)<br>&gt; for row, filepath in enumerate(file_list, start=1):<br>&gt;  #Get path and filename<br>&gt;  wksht.row(row).write(0, filepath)<br>&gt;  #Get filename<br>&gt;  (ruta, filename) = os.path.split(filepath)<br>
&gt;  wksht.row(row).write(1, filename)<br>&gt;  # Get extent<br>&gt;  shapeData = ogr.Open(filepath)<br>&gt;  layer = shapeData.GetLayer()<br>&gt;  feature = layer.GetNextFeature()<br>&gt;  x_min, x_max, y_min, y_max = layer.GetExtent()<br>
&gt;  x_y = layer.GetExtent()<br>&gt;  wksht.row(row).write(2, x_y[0])<br>&gt;  wksht.row(row).write(3, x_y[1])<br>&gt;  wksht.row(row).write(4, x_y[2])<br>&gt;  wksht.row(row).write(5, x_y[3])<br>&gt;  #Get geometry type;1=Point, 2=LineString, 3=Polygon<br>
&gt;  defn = layer.GetLayerDefn()<br>&gt;  wksht.row(row).write(6, defn.GetGeomType())<br>&gt;  #Get featurecount()<br>&gt;  wksht.row(row).write(7, layer.GetFeatureCount())<br>&gt;  #Verify prj from shp<br>&gt;  n = os.path.splitext(filepath)<br>
&gt;  p = n[0]+&#39;.prj&#39;<br>&gt;  if os.path.lexists(p):<br>&gt;   wksht.row(row).write(9, 1)<br>&gt;  else:<br>&gt;   wksht.row(row).write(9, 0)<br>&gt;  #Get host from the file<br>&gt;  wksht.row(row).write(12, socket.gethostname())<br>
&gt;<br>&gt;  #Extarct database<br>&gt;  t = n[0]+&#39;_bd.txt&#39;<br>&gt;  d = n[0]+&#39;.dbf&#39;<br>&gt;  if os.path.lexists(d):<br>&gt;   a = open (t,&quot;w+&quot;)<br>&gt;   dbf = Dbf(d,new=False)<br>&gt;<br>&gt;   for fldName in dbf.fieldDefs:<br>
&gt;    a.write(fldName.name)<br>&gt;    a.write(&quot; || &quot;)<br>&gt;    a.write(fldName.typeCode)<br>&gt;    a.write(&quot;\n&quot;)<br>&gt;   dbf.close()<br>&gt;   a.close()<br>&gt;   wksht.row(row).write(10, t)<br>
&gt;  else:<br>&gt;   print &quot;El archivo &quot; +n[0]+&quot;.shp&quot; &quot; no tiene dbf&quot;<br>&gt;   wksht.row(row).write(10, &quot;Sin bd&quot;)<br>&gt;<br>&gt; #Get projection, this is the part that fails<br>&gt;  print layer.GetSpatialRef()<br>
&gt;  wksht.row(row).write(8, layer.GetSpatialRef())<br>&gt;<br>&gt;  #Get file last modification<br>&gt;  t = time.strftime(&quot;%m/%d/%Y %I:%M:%S<br>&gt; %p&quot;,time.localtime(os.path.getmtime(filepath)))<br>&gt;  wksht.row(row).write(11, t)<br>
&gt;  #Get username<br>&gt;  wksht.row(row).write(13,os.environ.get(&quot;USERNAME&quot;))<br>&gt;<br>&gt; wrkbk.save(&#39;shp.xls&#39;)<br>&gt;<br>&gt; SEARCH_PATH = os.getcwd()<br>&gt; TARGET_FILE = os.path.realpath(&#39;shp.xls&#39;)<br>
&gt; print &quot;Buscando en&quot;, SEARCH_PATH, &quot;and writing to&quot;, TARGET_FILE<br>&gt; print &quot;Encontrando archivos...&quot;<br>&gt; print &quot;Escribiendo archivo de Excel...&quot;<br>&gt; print &quot;Listo.&quot;<br>
&gt;<br>&gt; I got the next output:<br>&gt; Python 2.6.6 (r266:84297, Aug 24 2010, 18:46:32) [MSC v.1500 32 bit (Intel)]<br>&gt; on<br>&gt; win32<br>&gt; Type &quot;help&quot;, &quot;copyright&quot;, &quot;credits&quot; or &quot;license&quot; for more information.<br>
&gt;&gt;&gt;&gt; import crawler_shp<br>&gt; None<br>&gt; None<br>&gt; PROJCS[&quot;WGS_1984_UTM_Zone_13N&quot;,<br>&gt;     GEOGCS[&quot;GCS_WGS_1984&quot;,<br>&gt;         DATUM[&quot;WGS_1984&quot;,<br>&gt;             SPHEROID[&quot;WGS_1984&quot;,6378137,298.257223563]],<br>
&gt;         PRIMEM[&quot;Greenwich&quot;,0],<br>&gt;         UNIT[&quot;Degree&quot;,0.017453292519943295]],<br>&gt;     PROJECTION[&quot;Transverse_Mercator&quot;],<br>&gt;     PARAMETER[&quot;latitude_of_origin&quot;,0],<br>
&gt;     PARAMETER[&quot;central_meridian&quot;,-105],<br>&gt;     PARAMETER[&quot;scale_factor&quot;,0.9996],<br>&gt;     PARAMETER[&quot;false_easting&quot;,500000],<br>&gt;     PARAMETER[&quot;false_northing&quot;,0],<br>
&gt;     UNIT[&quot;Meter&quot;,1]]<br>&gt; Traceback (most recent call last):<br>&gt;   File &quot;&lt;stdin&gt;&quot;, line 1, in &lt;module&gt;<br>&gt;   File &quot;crawler_shp.py&quot;, line 85, in &lt;module&gt;<br>&gt;     wksht.row(row).write(8, layer.GetSpatialRef())<br>
&gt;   File &quot;C:\Python26\lib\site-packages\xlwt\Row.py&quot;, line 248, in write<br>&gt;     raise Exception(&quot;Unexpected data type %r&quot; % type(label))<br>&gt; Exception: Unexpected data type &lt;class &#39;osgeo.osr.SpatialReference&#39;&gt;<br>
&gt;&gt;&gt;&gt;<br>&gt; Any idea?<br>&gt;<br></div></div>&gt; _______________________________________________<br>&gt; FWTools mailing list<br>&gt; <a href="mailto:FWTools@lists.maptools.org" target="_blank">FWTools@lists.maptools.org</a><br>
&gt; <a href="http://lists.maptools.org/mailman/listinfo/fwtools" target="_blank">http://lists.maptools.org/mailman/listinfo/fwtools</a><br>&gt; <a href="http://fwtools.maptools.org/" target="_blank">http://fwtools.maptools.org/</a><br>
&gt;<br>&gt;<br></blockquote></div></div></div><br></div><br>