top of page
Buscar

SCRIPT-R

  • frvargas87
  • 7 jul 2016
  • 1 Min. de lectura

Script para calcular el perímetro y superficie de un polígono. Este es un ejercicio adicional realizado en una tarea de la maestría.

El ejercicio indicaba calcular el perímetro y superficie dado un conjunto de puntos (Coordenadas X,Y). Pero modifiqué la opción para ingresar cualquier par de puntos y ver como variaba la forma, superficie, y límites de un polígono.

El código fue elaborado en R sowfware estadístico.

 

########OTRO CODIGO AUMENTANDO VERTICES####### rm(list=ls()) require(utils) { cat("APLICATIVO PARA CALCULAR AREA Y SUPERFICIE \n DEBERÁ INGRRESAR AL MENOS 3 COORDENADAS") X=as.numeric(readline("¿Ingrese coordenada X? ")) Y=as.numeric(readline("¿Ingrese coordenada Y? ")) } datos=as.matrix(rbind(cbind(X,Y),cbind(X,Y)))

while (nrow(datos)<=3) { datos=rbind(datos,NA) IngX=readline("Ingrese otra coordenada de X: ") datos[(nrow(datos)-1),1]=as.numeric(IngX) datos[nrow(datos),1]=datos[1,1] IngY=readline("Ingrese otra coordenada de Y: ") datos[nrow(datos)-1,2]=as.numeric(IngY) datos[nrow(datos),2]=datos[1,2] #IngCodigo=readline("¿Desea ingresar más vértices? (1-Sí/2-No): ") }

{ IngCodigo=readline("¿Desea ingresar más vértices? (1-Sí/2-No): ") while (IngCodigo==1) { datos=rbind(datos,NA) IngX=readline("Ingrese otra coordenada de X: "); datos[(nrow(datos)-1),1]=as.numeric(IngX) datos[nrow(datos),1]=datos[1,1] IngY=readline("Ingrese otra coordenada de Y: "); datos[nrow(datos)-1,2]=as.numeric(IngY) datos[nrow(datos),2]=datos[1,2] IngCodigo=readline("¿Desea ingresar más vértices? (1-Sí/2-No): ") } if (IngCodigo!=1) { perim=0; superficie=0; for (i in (c(2:(nrow(datos))))) { perim=perim+sqrt(((datos[i-1,1]-datos[i,1])^2)+((datos[i-1,2]-datos[i,2])^2)) superficie= superficie+((datos[i-1,1]*datos[i,2])-(datos[i,1]*datos[i-1,2])) } perim=as.matrix(round(perim,3)) superficie=as.matrix(abs(superficie)/2) plot.new() plot(datos) polygon(datos) cat("RESULTADO:") cat(paste("\nPerímetro: ",as.character(perim),"u \nSuperficie: ",as.character(superficie),"u2")) winDialog(type = "ok", paste("Perímetro: ",as.character(perim),"u", "\n Superficie: ",as.character(superficie),"u2")) lineas=list(bquote( Perímetro==.(perim)~u),bquote(Superficie==.(superficie)~u^2)) text(max(datos[,1]-2),(min(datos[,2]+1)-(0.2264324 * 1.5 * seq(length(lineas)))),do.call(expression,lineas)) } }

 

Espero sus comentarios.

Descagar el instalador de R para correr el script.

Entradas recientes

Ver todo
Bases de Datos Espaciales - PostGIS

La base de datos espacial es el componente más importante en cualquier sistema GIS. Recuerde, los datos dependen de eso. Una buena base...

 
 
 

Comments


Entradas destacadas
Entradas recientes
Archivo
Buscar por tags
Síguenos
  • Twitter Basic Square
Visitantes
bottom of page