Herramientas de usuario

Herramientas del sitio


instrumentos:codigos:tuyo_shp

Enlace a la vista de comparación

Próxima revisión
Revisión previa
instrumentos:codigos:tuyo_shp [2022/07/30 19:31] – creado cherranzinstrumentos:codigos:tuyo_shp [2022/07/30 23:45] (actual) cherranz
Línea 1: Línea 1:
 ====== Construcción de capa esri shape a partir de datos tuyo ====== ====== Construcción de capa esri shape a partir de datos tuyo ======
 <Code:python linenums:1 |generico: //tuyo2shp.py//> <Code:python linenums:1 |generico: //tuyo2shp.py//>
-librerias +#funciones 
-import sys +def epoch(f): 
-import fiona +    epoch1970 = datetime(1970, 1, 1, 0, 0, 0, tzinfo=tzutc()) 
-import pandas as pd+    return int(((datetime.strptime(f, "%d-%m-%Y %H:%M:%S").replace(tzinfo=tzutc()) - epoch1970).total_seconds())/10) 
 # definir la capa # definir la capa
 # campos en el csv alt,dop,vdop,hdop,sat,lat,lon,dia,mes,anno,hora,min,seg,pm25,pm10 # campos en el csv alt,dop,vdop,hdop,sat,lat,lon,dia,mes,anno,hora,min,seg,pm25,pm10
 schema = { schema = {
     'geometry':'Point',     'geometry':'Point',
-    'properties':[('PM25','float'),('PM10','float'),('ALT','float'),('VDOP','float'),('HDOP','float'),('SAT','int'),('LAT','float'),('LON','float')]+    'properties':[('PM25','float'),('PM10','float'),('ALT','float'),('VDOP','float'),('HDOP','float'),('SAT','int'),('LAT','float'),('LON','float'),('fecha','str'),('epoch','int64')]
 } }
 pointDf = pd.read_csv('../data/csv/'+sys.argv[1]+".txt",header=0) pointDf = pd.read_csv('../data/csv/'+sys.argv[1]+".txt",header=0)
-#considerar como valido aquel dato conmas de 3 satelites a la vista + 
-filtro=pointDf['dop']<10 +#considerar como valido aquel dato con mas de 3 satelites a la vista 
-pointDf_f=pointDf[filtro]+filtro=pointDf['sat']>3 
 +pointDf=pointDf[filtro] 
 + 
 +#convertir algunas colunas en string para construir la fecha 
 +pointDf['dia']=pointDf['dia'].apply(str) 
 +pointDf['mes']=pointDf['mes'].apply(str) 
 +pointDf['anno']=pointDf['anno'].apply(str) 
 +pointDf['hora']=pointDf['hora'].apply(str) 
 +pointDf['min']=pointDf['min'].apply(str) 
 +pointDf['seg']=pointDf['seg'].apply(str) 
 +pointDf['fecha']=pointDf['dia']+"-"+pointDf['mes']+"-"+pointDf['anno']+" "+pointDf['hora']+":"+pointDf['min']+":"+pointDf['seg'
 +pointDf['epoch']=pointDf['fecha'].apply(epoch) 
 + 
 +print(pointDf) 
 + 
 pointShp = fiona.open('../data/shp/'+sys.argv[1]+".shp", mode='w', driver='ESRI Shapefile', pointShp = fiona.open('../data/shp/'+sys.argv[1]+".shp", mode='w', driver='ESRI Shapefile',
           schema = schema, crs = "EPSG:4326")           schema = schema, crs = "EPSG:4326")
-#iterate over each row in the dataframe and save record +#iterar sobre cada fila en dataframe y guardar el registro 
-for index, row in pointDf_f.iterrows():+for index, row in pointDf.iterrows():
     rowDict = {     rowDict = {
         'geometry' : {'type':'Point',         'geometry' : {'type':'Point',
                      'coordinates': (row.lon,row.lat)},                      'coordinates': (row.lon,row.lat)},
-        'properties': {'PM25' : row.pm25,'PM10':row.pm10,'ALT':row.alt,'VDOP':row.vdop,'HDOP':row.hdop,'SAT':row.sat,'LAT':row.lat,'LON':row.lon},+        'properties': {'PM25' : row.pm25,'PM10':row.pm10,'ALT':row.alt,'VDOP':row.vdop,'HDOP':row.hdop,'SAT':row.sat,'LAT':row.lat,'LON':row.lon,'fecha':row.fecha,'epoch':row.epoch},
     }     }
     pointShp.write(rowDict)     pointShp.write(rowDict)
-#close fiona object+#cerrar el objeto fiona
 pointShp.close() pointShp.close()
 </Code> </Code>
instrumentos/codigos/tuyo_shp.1659220264.txt.gz · Última modificación: 2022/07/30 19:31 por cherranz