'; ?> mod_saveWKT "; #echo "Selektieren: "; #echo "Speichern:
"; echo ""; if(isset($tablenames)){ $sql = "SELECT * from ".$tablenames." limit 1"; $res = pg_query($con,$sql); $num = pg_num_fields($res); echo ""; $cnt = 0; for($i=0; $i<$num; $i++){ echo ""; echo ""; echo ""; if(!isset($str_names)){ $str_names = pg_fieldname($res,$i); } else{ $str_names .= ",".pg_fieldname($res,$i); } $cnt++; } echo "
".pg_fieldname($res,$i)."".pg_fieldtype($res,$i)."
"; echo "
"; echo ""; echo ""; echo ""; //NEW!!! echo ""; //NEW!!! echo ""; echo ""; echo ""; //NEW!!! echo ""; echo ""; } if($save){ $myColumns = explode(",",$myStrColumns); $myX = explode(",", $x); $myY = explode(",", $y); $myxcount = count($myX); if ($myxcount == 1) { $geoType = 'POINT'; } if ($myxcount > 1 && $myX[0] != $myX[$myxcount-1]) { $geoType = 'MULTILINESTRING'; if ($geometryType == 'LINESTRING') { $geoType = 'LINESTRING'; } //NEW!! funktioniert aber nur solange, wie keine wirklichen MULTILINESTRING's digitalisiert werden } if ($myxcount > 1 && $myX[0] == $myX[$myxcount-1]) { $geoType = 'MULTIPOLYGON'; if ($geometryType == 'POLYGON') { $geoType = 'POLYGON'; } //NEW!! funktioniert aber nur... } //NEW!!! in Tabellen vom GEOMETRY-Typ lassen sich (datensatzweise) verschiedene Geometrien abspeichern if ($geometryType != $geoType && $geometryType != 'GEOMETRY') { echo "
"; echo "Geometrie (".$geoType.") stimmt nicht mit der der Tabelle (".$geometryType.") �berein!"; die; } if(count(myX) != count(myY)){ echo "Geometrie verschl�sselt....................."; die; } $sql = "INSERT INTO ".$tablenames."("; for($i=0; $i0){ $sql .= ","; } $sql .= $myColumns[$i]; } $sql .= ") "; $sql .= "VALUES ("; for($i=0; $i0){ $sql .= ","; } if($myColumns[$i] == $myGeometry){ //NEW!! $geoType anstelle von $geometryType, um a) auch in Tabellen mit Geometrietyp 'Geometry' abspeichern zu k�nnen if ($geoType == "POINT") { $sql .= "transform(GeometryFromText('".$geoType."("; //$geoType anstelle von $geometryType s. o. } elseif ($geoType == "LINESTRING") { $sql .= "transform(GeometryFromText('".$geoType."("; } elseif ($geoType == "MULTILINESTRING") { $sql .= "transform(GeometryFromText('".$geoType."(("; } elseif ($geoType == "POLYGON") { $sql .= "transform(GeometryFromText('".$geoType."(("; } elseif ($geoType == "MULTIPOLYGON") { $sql .= "transform(GeometryFromText('".$geoType."((("; } for($j=0; $j 0){$sql .= ", ";} $sql .= $myX[$j] . " " . $myY[$j]; } if ($geoType == "POINT") { // $sql .= ")))',".$src_epsg."),".$epsg.")"; //OLD!!! so funktioniert es mit postgis Version 0.9 !! $sql .= ")',".$src_epsg."),".$epsg.")"; //NEW!!! aber nur so mit 1.0.0 RC6 } elseif ($geoType == "LINESTRING") { //NEW!!! $sql .= ")',".$src_epsg."),".$epsg.")"; } elseif ($geoType == "MULTILINESTRING") { // $sql .= "))))',".$src_epsg."),".$epsg.")"; // 0.9 $sql .= "))',".$src_epsg."),".$epsg.")"; // postgis 1.0.0 } elseif ($geoType == "POLYGON") { $sql .= "))',".$src_epsg."),".$epsg.")"; //NEW!!! } elseif ($geoType == "MULTIPOLYGON") { // $sql .= ")))))',".$src_epsg."),".$epsg.")"; // 0.9 $sql .= ")))',".$src_epsg."),".$epsg.")"; // postgis 1.0.0 } /* Linestrings lassen sich in MULTILINESTRING, Polygone in MULTIPOLYGON-Tabellen abspeichern, wenn gegen $geoType gepr�ft wird, ergibt sich kein Problem // da sich aber MULTI... nicht in Tabellen vom einfachen Typ LINESTRING bzw. POLYGON abspeichern lassen, wurde dies oben (unelegant) abgefangen else { echo "
Tabelle vom Typ Linestring, Polygon etc?"; } */ } else{ $sql .= "'".$_REQUEST[$myColumns[$i]]."'"; } } $sql .= ")"; #echo $sql; /* * @security_patch sqli open */ $res = pg_query($con,$sql); } ?>