1 votos

Cómo transformar/convertir el sistema de referencia de coordenadas con Proj4 y php

Básicamente mi pregunta es:

¿Puedo combinar las funciones de proj4 con php en mi servidor?

Por ejemplo, me gustaría saber si es posible obtener datos en WGS84 y transformarlos en ETRS89.

Necesito obtener datos WGS84 con php, luego usar proj4 para transformarlos a ETRS89 y finalmente usarlos en php.

Si la respuesta es correcta, ¿cómo puedo configurar php y proj4 para que trabajen juntos?

¡¡¡Gracias!!!

2voto

Dennkster Puntos 331

Sí se puede conseguir que trabajen juntos. A continuación se muestra un ejemplo de código de una página php que codifiqué que utiliza proj4js, el mío es ligeramente diferente pasando de un plano de estado a wgs84 pero el concepto es el mismo. (La sintaxis es un poco fuera como tuve problemas para pegar en un bloque de código y mi código es una especie de propagación en todo el lugar en un par de archivos php, pero creo que se puede seguir la lógica)

enter code here

require_once "config.php";
   foreach ($zones as $id => $zone) {
     $zone_selector .= '<option    value="'.$id.'">'.$zone['name'].'</option>';}
if ($_REQUEST['zone']) {
    $zone_id = $_REQUEST['zone'];
    $zone_name = $zones[$zone_id]['name'];
    $zone_vars = $zones[$zone_id]['vars'];}
if (!$zone_name) $zone_name = "State Plane Coordinates Converter";

points = new Array();
noaa_points = new Array();
var p;
var thispoint;

Proj4js.defs["'.$zone_id.'"] = "'.$zone_vars.'";

var dest = new Proj4js.Proj("EPSG:4326");  /* Lat and Lon projection */
var source = new Proj4js.Proj("'.$zone_id.'");

if ($_REQUEST['n'] && $_REQUEST['e']) 
{echo '
p = new Proj4js.Point('.$_REQUEST['e'].','.$_REQUEST['n'].');
Proj4js.transform(source,dest,p);
points.push({num:1,north:"'.$_REQUEST['n'].'",east:"'.$_REQUEST['e'].'",zone:"'.$zone_name.'",elev:0,desc:"Single Converted Point",lat:p.y,lng:p.x,noaalat:0,noaalng:0});

1voto

Michael Barker Puntos 8234

Si usas geoserver puedes configurarlo para hacer transformaciones desde el origen. Además, el WGS84 es prácticamente igual al ETRS89 (<1m) (necesitas saber cuándo se mide para hacer transformaciones más precisas), así que probablemente puedas jugar al volcado y asumir que son iguales.

¿Has considerado PostGIS -> Geoserver -> PHP app stack? En esa configuración tendrías PostGIS y Geoserver que son capaces de transformar datos.

Algo así como cargar los datos en PostGIS , hacer st_Transform , usar la vista del geoservidor para la capa WFS o WMS del servidor. O simplemente podría utilizar PostGIS + (SQL) de PHP, donde PostGIS hace todas las funciones duras de GIS y php sólo almacena/vierte los datos de la base de datos.

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