<?php
define
("DOTSIZE",18);
define("XIMGSIZE",(1540-1200)*DOTSIZE+1);
define("YIMGSIZE",(500-200)*DOTSIZE+1);
$eq=file("shinoutimei.txt",FILE_IGNORE_NEW_LINES);
$im=imagecreate(XIMGSIZE,YIMGSIZE);
$red=imagecolorallocate($im,255,0,0);
$whi=imagecolorallocate($im,255,255,255);
$blk=imagecolorallocate($im,0,0,0);
imagefilledrectangle($im,0,0,XIMGSIZE-1,YIMGSIZE-1,$whi);
$font="IPAfont00303/ipagp.ttf";
$namelist=array();
foreach(
$eq as $eql){
    list(
$y,$x,$eqname)=explode(",",$eql);
    
$namelist[$eqname][fxy($x,$y)]=TRUE;
}
foreach(
$namelist as $name=>$namelistl){#地域名を持つ座標の配列を取り出す
    
$avex=0;
    
$avey=0;
    
$avec=0;
    foreach(
$namelistl as $eql=>$t){#座標の配列から座標(x,y)を取り出す
        
list($x,$y)=explode(",",$eql);#座標(x,y)からxとyを取り出す
        
list($xi,$yi)=xtoxi($x,$y);
        
$avex+=$xi;
        
$avey+=$yi;
        
$avec++;
        if(!isset(
$namelistl[fxy($x-.1,$y)])){
            
imageline($im,$xi,$yi,$xi,$yi+DOTSIZE,$red);
        }
        if(!isset(
$namelistl[fxy($x+.1,$y)])){
            
imageline($im,$xi+DOTSIZE,$yi,$xi+DOTSIZE,$yi+DOTSIZE,$red);
        }
        if(!isset(
$namelistl[fxy($x,$y-.1)])){
            
imageline($im,$xi,$yi+DOTSIZE,$xi+DOTSIZE,$yi+DOTSIZE,$red);
        }
        if(!isset(
$namelistl[fxy($x,$y+.1)])){
            
imageline($im,$xi,$yi,$xi+DOTSIZE,$yi,$red);
        }
    }
    
$xi=$avex/$avec;
    
$yi=$avey/$avec;
    
$text=mb_convert_encoding($name,"UTF-8""SJIS");
    
imagettftext($im100$xi-(mb_strlen($name)*2), $yi+DOTSIZE$blk$font$text);
}
header('Content-Type: image/png');
imagepng($im);
imagedestroy($im);

function 
xtoxi($x,$y){
    
$xi=round(($x-120)*DOTSIZE*10);
    
$yi=round(YIMGSIZE-1-DOTSIZE-($y-20)*DOTSIZE*10);
    return array(
$xi,$yi);
}

function 
fxy($x,$y){
    return 
sprintf("%01.1f",$x).",".sprintf("%01.1f",$y);
}