<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="https://kvwmap.de/wiki/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
		<id>https://kvwmap.de/wiki/index.php?action=history&amp;feed=atom&amp;title=Kvwmap_ref.php</id>
		<title>Kvwmap ref.php - Versionsgeschichte</title>
		<link rel="self" type="application/atom+xml" href="https://kvwmap.de/wiki/index.php?action=history&amp;feed=atom&amp;title=Kvwmap_ref.php"/>
		<link rel="alternate" type="text/html" href="https://kvwmap.de/wiki/index.php?title=Kvwmap_ref.php&amp;action=history"/>
		<updated>2026-05-11T08:41:50Z</updated>
		<subtitle>Versionsgeschichte dieser Seite in kvwmap</subtitle>
		<generator>MediaWiki 1.23.1</generator>

	<entry>
		<id>https://kvwmap.de/wiki/index.php?title=Kvwmap_ref.php&amp;diff=5694&amp;oldid=prev</id>
		<title>Rahn am 1. Dezember 2010 um 13:05 Uhr</title>
		<link rel="alternate" type="text/html" href="https://kvwmap.de/wiki/index.php?title=Kvwmap_ref.php&amp;diff=5694&amp;oldid=prev"/>
				<updated>2010-12-01T13:05:25Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt; &amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;?&lt;br /&gt;
&lt;br /&gt;
 define('CACHEPATH', '/www/kvwmap/cache/');    # Pfad, in dem die gecachten Bildern gespeichert werden&lt;br /&gt;
 define('MAPFILE', 'kvwmap_ref.map');          # verwendete Mapdatei&lt;br /&gt;
&lt;br /&gt;
 function owsProxy() {&lt;br /&gt;
    # prüft zunächst ob ein Bild schon mal abgefragt wurde&lt;br /&gt;
    # wenn ja, liefert der Dienst dieses Bild aus&lt;br /&gt;
    # wenn nicht wird der ows-respone neu erzeugt&lt;br /&gt;
    # Parameter und Werte in Kleinschreibung zurückgeben&lt;br /&gt;
    $wms_param=getKvpsToLower($_REQUEST);&lt;br /&gt;
    $formvars = $wms_param;&lt;br /&gt;
    # Folgendes bezieht sich nur auf getMap Anfragen&lt;br /&gt;
    # alle anderen Operationen werden als ganz normale OWS-Requests abgearbeitet.&lt;br /&gt;
    if ($wms_param['request']=='getmap') {&lt;br /&gt;
      # Dateiformat zuweisen&lt;br /&gt;
      $imageformat=$wms_param['format'];&lt;br /&gt;
      # Dateiendung zuweisen&lt;br /&gt;
      $imageextention=substr(strstr($imageformat,'/'),1); # z.B. macht aus image/png png&lt;br /&gt;
      # eindeutigen Dateinamen erzeugen aus bbox Parameter&lt;br /&gt;
      $bbox=explode(',',$wms_param['bbox']);&lt;br /&gt;
      $box=$bbox[0].','.$bbox[1].','.$bbox[2].','.$bbox[3];&lt;br /&gt;
      $zoomstufe=round(log(720/($bbox[2]-$bbox[0]),2));&lt;br /&gt;
      $sw=round($bbox[0],1).','.round($bbox[1],1);&lt;br /&gt;
      $tmpfile = CACHEPATH.&lt;br /&gt;
        $wms_param['layers'].'_'.&lt;br /&gt;
        $zoomstufe.'-'.&lt;br /&gt;
        $sw.'_'.&lt;br /&gt;
        $wms_param['width'].'x'.&lt;br /&gt;
        $wms_param['height'].'.'.$imageextention;&lt;br /&gt;
      # Prüfen ob die Datei schon existiert&lt;br /&gt;
      if(file_exists($tmpfile)) {&lt;br /&gt;
        # Datei existiert schon, Ausgeben des Bildes an den Browser&lt;br /&gt;
        ob_end_clean();&lt;br /&gt;
        header('content-type:'.$imageformat);&lt;br /&gt;
        echo file_get_contents($tmpfile);&lt;br /&gt;
      }&lt;br /&gt;
      else {&lt;br /&gt;
        createBufferOWSResponse(300, $tmpfile, $formvars);&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    else {&lt;br /&gt;
      createOWSResponse($formvars);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function createBufferOWSResponse($pixelbuffer, $tmpfile, $formvars){     # Angabe in Pixeln, wie groß der Buffer sein soll, tempfile&lt;br /&gt;
	$width = $formvars['width'];&lt;br /&gt;
	$height = $formvars['height'];&lt;br /&gt;
	# Parameter um Buffer erweitern&lt;br /&gt;
	$buffer = $pixelbuffer/$formvars['width'];&lt;br /&gt;
	$bbox = explode(',', $formvars['bbox']);&lt;br /&gt;
	$extent_width = $bbox[2] - $bbox[0];&lt;br /&gt;
	$extent_buffer = $extent_width * $buffer;&lt;br /&gt;
	$formvars['width'] = $formvars['width'] + 2*$pixelbuffer;&lt;br /&gt;
	$formvars['height'] = $formvars['height'] + 2*$pixelbuffer;&lt;br /&gt;
	$bbox[0] = $bbox[0] - $extent_buffer;&lt;br /&gt;
	$bbox[1] = $bbox[1] - $extent_buffer;&lt;br /&gt;
	$bbox[2] = $bbox[2] + $extent_buffer;&lt;br /&gt;
	$bbox[3] = $bbox[3] + $extent_buffer;&lt;br /&gt;
	$formvars['bbox'] = $bbox[0].','.$bbox[1].','.$bbox[2].','.$bbox[3];&lt;br /&gt;
	# GetMap-Response erzeugen&lt;br /&gt;
	$map = ms_newMapObj(MAPFILE);&lt;br /&gt;
	$requestobject = ms_newOwsRequestObj();&lt;br /&gt;
	$params = array_keys($formvars);&lt;br /&gt;
	for($i = 0; $i &amp;lt; count($formvars); $i++){&lt;br /&gt;
		$requestobject-&amp;gt;setParameter($params[$i],$formvars[$params[$i]]);&lt;br /&gt;
	}&lt;br /&gt;
	ms_ioinstallstdouttobuffer();&lt;br /&gt;
	$map-&amp;gt;owsdispatch($requestobject);&lt;br /&gt;
	$contenttype = ms_iostripstdoutbuffercontenttype();&lt;br /&gt;
	ob_end_clean();   //Ausgabepuffer leeren (sonst funktioniert header() nicht)&lt;br /&gt;
	ob_start();&lt;br /&gt;
	if ($contenttype == 'image/png'){&lt;br /&gt;
		header('Content-type: image/png');&lt;br /&gt;
	}&lt;br /&gt;
	if ($contenttype == 'image/jpeg'){&lt;br /&gt;
		header('Content-type: image/jpeg');&lt;br /&gt;
	}&lt;br /&gt;
	ms_iogetStdoutBufferBytes();&lt;br /&gt;
	$contents = ob_get_contents();&lt;br /&gt;
	ob_end_clean();   //Ausgabepuffer leeren (sonst funktioniert header() nicht)&lt;br /&gt;
	$image  = imagecreatefromstring($contents);&lt;br /&gt;
	# Bild clippen&lt;br /&gt;
	$clippedimage = imagecreatetruecolor($width, $height);&lt;br /&gt;
	$white = imagecolorallocate($clippedimage, 255,255,255);&lt;br /&gt;
	imagefill($clippedimage, 0, 0, $white);&lt;br /&gt;
	imagecolortransparent($clippedimage, $white);&lt;br /&gt;
	ImageCopy($clippedimage, $image, 0, 0, $pixelbuffer, $pixelbuffer, $width, $height);&lt;br /&gt;
	if($contenttype == 'image/png'){&lt;br /&gt;
		imagepng($clippedimage);&lt;br /&gt;
		if ($tmpfile != NULL) {&lt;br /&gt;
			imagepng($clippedimage, $tmpfile);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	elseif($contenttype == 'image/jpeg'){&lt;br /&gt;
		imagejpeg($clippedimage);&lt;br /&gt;
		if ($tmpfile != NULL) {&lt;br /&gt;
			imagejpeg($clippedimage, $tmpfile);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	ob_end_flush();&lt;br /&gt;
	ms_ioresethandlers();&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
  function createOWSResponse($formvars){&lt;br /&gt;
	$map = ms_newMapObj(MAPFILE);&lt;br /&gt;
	$requestobject = ms_newOwsRequestObj();&lt;br /&gt;
	$params = array_keys($formvars);&lt;br /&gt;
	for($i = 0; $i &amp;lt; count($formvars); $i++){&lt;br /&gt;
		$requestobject-&amp;gt;setParameter($params[$i],$formvars[$params[$i]]);&lt;br /&gt;
	}&lt;br /&gt;
	ms_ioinstallstdouttobuffer();&lt;br /&gt;
	$map-&amp;gt;owsdispatch($requestobject);&lt;br /&gt;
	$contenttype = ms_iostripstdoutbuffercontenttype();&lt;br /&gt;
	ob_end_clean();   //Ausgabepuffer leeren (sonst funktioniert header() nicht)&lt;br /&gt;
	ob_start();&lt;br /&gt;
	if ($contenttype == 'image/png'){&lt;br /&gt;
		header('Content-type: image/png');&lt;br /&gt;
	}&lt;br /&gt;
	ms_iogetStdoutBufferBytes();&lt;br /&gt;
	ob_end_flush();&lt;br /&gt;
	ms_ioresethandlers();&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function getKvpsToLower($kvps) {&lt;br /&gt;
	foreach ($kvps as $key =&amp;gt; $value) {&lt;br /&gt;
		$param[strtolower($key)]=strtolower($value);&lt;br /&gt;
	}&lt;br /&gt;
	return $param;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  dl('php_mapscript.so');&lt;br /&gt;
  owsProxy();&lt;br /&gt;
&lt;br /&gt;
  ?&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Rahn</name></author>	</entry>

	</feed>