PHPのXMLWriterを使って、電子国土Webシステムで利用できる点型と線型XMLデータを出力してみました。
点型XMLデータを出力するサンプルです。
PHP:
-
function test_point()
-
{
-
$xml = new XMLWriter();
-
-
$uuidref = 'JGD2000 / (L, B)';
-
$symbol_url = 'http://URL/abs.bmp';
-
$symbol_size = '16,static';
-
-
$xml->openUri('./test_point.xml');// XML出力先のファイル名
-
-
$xml->setIndent(1);
-
$xml->setIndentString(' ');
-
-
$xml->startDocument('1.0','UTF-8');
-
$xml->startElement('GI');
-
{
-
$xml->writeAttribute('version','1.0');
-
-
$xml->startElement('dataset');
-
{
-
// layer要素の繰り返し
-
$xml->startElement('layer');
-
{
-
$xml->writeElement('name','detail.point');
-
$xml->writeElement('description','test');
-
-
$xml->startElement('style');
-
{
-
$xml->writeElement('name','sample');
-
$xml->writeElement('type','symbol');
-
$xml->writeElement('displaylevel','all');
-
$xml->writeElement('display','on');
-
$xml->writeElement('transparent','off');
-
$xml->writeElement('selection','on');
-
-
$xml->startElement('symbol');
-
{
-
$xml->writeElement('uri',$symbol_url);
-
$xml->writeElement('size',$symbol_size);
-
}
-
$xml->endElement();
-
}
-
$xml->endElement();
-
-
// point要素 1
-
$xml->startElement('point');
-
$xml->writeAttribute('id','id1');
-
{
-
$xml->startElement('point');
-
{
-
$xml->startElement('CRS');
-
$xml->writeAttribute('uuidref',$uuidref);
-
$xml->endElement();
-
-
$xml->startElement('position');
-
{
-
$xml->writeElement('coordinate','139.57975 35.703162');
-
}
-
$xml->endElement();
-
}
-
$xml->endElement();
-
-
$xml->writeElement('name','点型1');
-
$xml->writeElement('description','点型1');
-
$xml->writeElement('attribute','名称=ポイント1,@URL=http://,項目名1=xx');// 項目名と値には、「,」「=」が使えない.
-
}
-
$xml->endElement();
-
-
// point要素 2
-
$xml->startElement('point');
-
$xml->writeAttribute('id','id2');
-
{
-
$xml->startElement('point');
-
{
-
$xml->startElement('CRS');
-
$xml->writeAttribute('uuidref',$uuidref);
-
$xml->endElement();
-
-
$xml->startElement('position');
-
{
-
$xml->writeElement('coordinate','139.575361 35.700113');
-
}
-
$xml->endElement();
-
}
-
$xml->endElement();
-
-
$xml->writeElement('name','点型2');
-
$xml->writeElement('description','点型2');
-
$xml->writeElement('attribute','名称=ポイント2,@URL=http://,電話番号=xx');
-
}
-
$xml->endElement();
-
}
-
$xml->endElement();
-
}
-
$xml->endElement();
-
}
-
$xml->endElement();
-
-
$xml->endDocument();
-
}
線型XMLデータを出力するサンプルです。
PHP:
-
function test_line()
-
{
-
$xml = new XMLWriter();
-
-
$uuidref = 'JGD2000 / (L, B)';
-
-
$xml->openUri('./test_line.xml');// XML出力先のファイル名
-
-
$xml->setIndent(1);
-
$xml->setIndentString(' ');
-
-
$xml->startDocument('1.0','UTF-8');
-
$xml->startElement('GI');
-
{
-
$xml->writeAttribute('version','1.0');
-
-
$xml->startElement('dataset');
-
{
-
// layer要素の繰り返し
-
$xml->startElement('layer');
-
{
-
$xml->writeElement('name','detail.line');
-
$xml->writeElement('description','test');
-
-
$xml->startElement('style');
-
{
-
$xml->writeElement('name','sample');
-
$xml->writeElement('type','string');
-
$xml->writeElement('displaylevel','all');
-
$xml->writeElement('display','on');
-
$xml->writeElement('transparent','off');
-
$xml->writeElement('selection','off');
-
$xml->writeElement('rgb','255,0,0');
-
$xml->writeElement('width','4,static');
-
-
$xml->startElement('style');
-
$xml->writeAttribute('kind','system');
-
{
-
$xml->text('solid');
-
}
-
$xml->endElement();
-
}
-
$xml->endElement();
-
-
$xml->startElement('curve');
-
{
-
$xml->startElement('GM_Curve');
-
$xml->writeAttribute('id','id1');
-
{
-
$xml->startElement('CRS');
-
$xml->writeAttribute('uuidref',$uuidref);
-
$xml->endElement();
-
-
$xml->startElement('proxy');
-
$xml->writeAttribute('idref','id1');
-
$xml->endElement();
-
-
$xml->startElement('proxy');
-
-
-
{
-
$xml->startElement('GM_OrientableCurve');
-
$xml->writeAttribute('id','_id1');
-
{
-
$xml->startElement('proxy');
-
$xml->writeAttribute('idref','id1');
-
$xml->endElement();
-
$xml->startElement('proxy');
-
$xml->writeAttribute('idref','_id1');
-
$xml->endElement();
-
-
$xml->writeElement('orientation','-');
-
-
$xml->startElement('primitive');
-
$xml->writeAttribute('idref','id1');
-
$xml->endElement();
-
}
-
$xml->endElement();
-
}
-
$xml->endElement();
-
-
$xml->writeElement('orientation','+');
-
$xml->startElement('primitive');
-
$xml->writeAttribute('idref','id1');
-
$xml->endElement();
-
-
$xml->startElement('segment');
-
{
-
$xml->startElement('GM_LineString');
-
{
-
$xml->writeElement('interpolation','linear');
-
-
$xml->startElement('controlPoint');
-
{
-
// 座標1
-
$xml->startElement('column');
-
{
-
$xml->startElement('direct');
-
{
-
$xml->writeElement('coordinate','139.579361 35.707272');
-
}
-
$xml->endElement();
-
}
-
$xml->endElement();
-
-
// 座標2
-
$xml->startElement('column');
-
{
-
$xml->startElement('direct');
-
{
-
$xml->writeElement('coordinate','139.572611 35.700181');
-
}
-
$xml->endElement();
-
}
-
$xml->endElement();
-
}
-
$xml->endElement();
-
}
-
$xml->endElement();
-
}
-
$xml->endElement();
-
}
-
$xml->endElement();
-
-
$xml->writeElement('name','線分1');
-
$xml->writeElement('description','線分1');
-
$xml->writeElement('attribute','線名=A');// 項目名と値には、「,」「=」が使えない.
-
}
-
$xml->endElement();
-
}
-
$xml->endElement();
-
}
-
$xml->endElement();
-
}
-
$xml->endElement();
-
-
$xml->endDocument();
-
}