4 votos

cómo emitir entero a flotar en un ogrinfo instrucción sql?

Tengo un shapefile por la que me gustaría sumar los valores de una columna. Como la suma excede la capacidad de un entero, necesito para emitir los valores a un flotador. He intentado lo siguiente:

ogrinfo -sql "SELECT sum(cast(POP as float(10,0))) FROM Settlement_points" Settlement_points.shp

ogrinfo devuelve mensajes de error como:

ERROR 1: Invalid index : -1
More than 1000 errors or warnings have been reported. No more will be reported from now.
OGRFeature(Settlement_points):0
  SUM_FIELD_1 (Real) = 0

1./ ¿Cómo puedo corregir mi instrucción sql? 2./ ¿Qué es en realidad el procesamiento de la declaración sql en ogrinfo; hay algunos límites?

2voto

Jauder Ho Puntos 3172

He encontrado esto en ogr sql página

Mientras que el operador de conversión puede ser aplicada en cualquier parte de una expresión, incluso en una cláusula where, el control detallado de la salida de campo el formato es compatible sólo si el operador de conversión es el "exterior" los operadores en un campo en el campo de la lista de definición. En otros contextos todavía es útil para convertir entre numérico, cadena y los datos de la fecha tipos.

Por lo que se ve no se puede anidar dentro de la función SUMA. OGR SQL también no es compatible con el uso de un SELECT dentro de la a partir DE la cual habría sido mi siguiente selección de estilo.

Vas a tener que escribir un nuevo archivo con el menú de la columna como float o cargar los datos en algo como spatialite/sqlite para darle más poder.

2voto

Josh Puntos 569

Bruno,

No sé cuál es su flujo de trabajo, pero se puede hacer con la ogr herramientas en dos pasos:

ogr2ogr -sql "SELECT cast(POP as float(10,0)) FROM Settlement_points" sp_float.shp Settlement_points.shp

ogrinfo -sql "SELECT sum(POP) FROM sp_float" sp_float.shp

Usted también podría usar ogr2ogr en su segundo comando para escribir los valores para el shapefile.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X