Tengo una clase de características de contornos, con un intervalo de 0.2 metros. ¿Deseo seleccionar solo esos contornos, que están en un intervalo de 1 m?
Intenté usar la siguiente sintaxis en el cuadro de diálogo 'Seleccionar por atributo' (en ArcMap), pero selecciona todos los contornos:
Mod("ELEVATION", 1)=0
¿Qué consulta debo ejecutar?
arcgis-desktop
sql
select-by-attribute
contour
Devdatta Tengshe
fuente
fuente
Respuestas:
El truco simple para seleccionar solo valores enteros es utilizar la siguiente sintaxis:
Mod(Round("ELEVATION", 0)*10, 10)=0
Esta multiplicación por 10 hace que todos los valores sean enteros, y luego seleccionamos solo aquellos que son múltiplos de 10.
En caso de que desee seleccionar Múltiplos de algún otro número, simplemente multiplique 10 por el intervalo.
Para obtener contornos a intervalos de 5 m, use:
Mod(Round("ELEVATION",0) * 10, 50)=0
Para obtener contornos a intervalos de 100 m use:
Mod(Round("ELEVATION", 0) * 10, 1000)=0
Actualización
Según el consejo de Whuber dado en el comentario a continuación, he agregado la función de redondeo en la expresión de consulta.
fuente
MOD
, estará sujeto a un error de redondeo de punto flotante, y eso es crítico aquí: si está bajo incluso por el dígito menos significativo,MOD
puede devolver el valor incorrecto (dependiendo de cómo se implemente). Me gustaría sugerir redondear los valores antes de aplicarMOD
para evitar estos errores sutiles (e insidiosos).ROUND
para lograr más precisión en el redondeo.Aquí hay otra opción de consulta. En gran medida hace lo mismo que las respuestas enumeradas anteriormente, pero (en mi opinión) es un poco más fácil de personalizar para diferentes escenarios.
Para mostrar cualquier contorno divisible por 10
Para mostrar cualquier contorno divisible por 50
Para mostrar contornos de medio metro
Para mostrar contornos de 10 metros con un desplazamiento arbitrario (por ejemplo, 10.2, 20.2, 30.2)
Al final del día, esta es solo otra opción a considerar.
fuente
Esto estaba destinado a ser un comentario sobre la respuesta anterior, lo siento .
La sintaxis varía según el tipo de base de datos en la que se almacenan sus contornos, pero la solución dada parece elegir contornos después de redondear sus valores. Entonces, por ejemplo, en mi prueba, esto logró un conjunto seleccionado que incluía 0,3 m y 0,4 m. De hecho, no excluyó ninguno de los valores.
Esta ecuación
Mod(Round("ELEVATION" * 10, 0), 2)=0
Me dio resultados que parecían coincidir con lo que preguntaba el interrogador.
fuente
Para obtener contornos de índice, uso esto en la Calculadora de campo:
En ARCMAP
'Escriba "c" (sin comillas) en el campo de entrada de texto en la parte inferior del cuadro de diálogo y haga clic en Aceptar.
En QGIS
"" nivel "" Establecer en campo de altura de contorno "200" Establecer en intervalo de contornos de índice
Entonces: "1" es un contorno de índice y "0" no es un contorno de índice
fuente
Multiplique el contorno por 10 y luego el módulo por 10 para determinar si hay un resto. Si no queda más que un número entero, de lo contrario es flotante.
fuente