PHPのXMLWriterを使って、電子国土Webシステムで利用できる点型と線型XMLデータを出力してみました。


点型XMLデータを出力するサンプルです。

PHP:
  1. function test_point()
  2. {
  3.     $xml = new XMLWriter();
  4.  
  5.     $uuidref = 'JGD2000 / (L, B)';
  6.     $symbol_url = 'http://URL/abs.bmp';
  7.     $symbol_size = '16,static';
  8.  
  9.     $xml->openUri('./test_point.xml');// XML出力先のファイル名
  10.  
  11.     $xml->setIndent(1);
  12.     $xml->setIndentString(' ');
  13.  
  14.     $xml->startDocument('1.0','UTF-8');
  15.     $xml->startElement('GI');
  16.     {
  17.         $xml->writeAttribute('version','1.0');
  18.         $xml->writeAttribute('timeStamp',Date('Y-m-d\TH:i:s'));
  19.  
  20.         $xml->startElement('dataset');
  21.         {
  22.             // layer要素の繰り返し
  23.             $xml->startElement('layer');
  24.             {
  25.                 $xml->writeElement('name','detail.point');
  26.                 $xml->writeElement('description','test');
  27.  
  28.                 $xml->startElement('style');
  29.                 {
  30.                     $xml->writeElement('name','sample');
  31.                     $xml->writeElement('type','symbol');
  32.                     $xml->writeElement('displaylevel','all');
  33.                     $xml->writeElement('display','on');
  34.                     $xml->writeElement('transparent','off');
  35.                     $xml->writeElement('selection','on');
  36.  
  37.                     $xml->startElement('symbol');
  38.                     {
  39.                         $xml->writeElement('uri',$symbol_url);
  40.                         $xml->writeElement('size',$symbol_size);
  41.                     }
  42.                     $xml->endElement();
  43.                 }
  44.                 $xml->endElement();
  45.  
  46.                 // point要素 1
  47.                 $xml->startElement('point');
  48.                 $xml->writeAttribute('id','id1');
  49.                 {
  50.                     $xml->startElement('point');
  51.                     {
  52.                         $xml->startElement('CRS');
  53.                         $xml->writeAttribute('uuidref',$uuidref);
  54.                         $xml->endElement();
  55.  
  56.                         $xml->startElement('position');
  57.                         {
  58.                             $xml->writeElement('coordinate','139.57975 35.703162');
  59.                         }
  60.                         $xml->endElement();
  61.                     }
  62.                     $xml->endElement();
  63.  
  64.                     $xml->writeElement('name','点型1');
  65.                     $xml->writeElement('description','点型1');
  66.                     $xml->writeElement('attribute','名称=ポイント1,@URL=http://,項目名1=xx');// 項目名と値には、「,」「=」が使えない.
  67.                 }
  68.                 $xml->endElement();
  69.  
  70.                 // point要素 2
  71.                 $xml->startElement('point');
  72.                 $xml->writeAttribute('id','id2');
  73.                 {
  74.                     $xml->startElement('point');
  75.                     {
  76.                         $xml->startElement('CRS');
  77.                         $xml->writeAttribute('uuidref',$uuidref);
  78.                         $xml->endElement();
  79.  
  80.                         $xml->startElement('position');
  81.                         {
  82.                             $xml->writeElement('coordinate','139.575361 35.700113');
  83.                         }
  84.                         $xml->endElement();
  85.                     }
  86.                     $xml->endElement();
  87.  
  88.                     $xml->writeElement('name','点型2');
  89.                     $xml->writeElement('description','点型2');
  90.                     $xml->writeElement('attribute','名称=ポイント2,@URL=http://,電話番号=xx');
  91.                 }
  92.                 $xml->endElement();
  93.             }
  94.             $xml->endElement();
  95.         }
  96.         $xml->endElement();
  97.     }
  98.     $xml->endElement();
  99.  
  100.     $xml->endDocument();
  101. }

線型XMLデータを出力するサンプルです。

PHP:
  1. function test_line()
  2. {
  3.     $xml = new XMLWriter();
  4.  
  5.     $uuidref = 'JGD2000 / (L, B)';
  6.  
  7.     $xml->openUri('./test_line.xml');// XML出力先のファイル名
  8.  
  9.     $xml->setIndent(1);
  10.     $xml->setIndentString(' ');
  11.  
  12.     $xml->startDocument('1.0','UTF-8');
  13.     $xml->startElement('GI');
  14.     {
  15.         $xml->writeAttribute('version','1.0');
  16.         $xml->writeAttribute('timeStamp',Date('Y-m-d\TH:i:s'));
  17.  
  18.         $xml->startElement('dataset');
  19.         {
  20.             // layer要素の繰り返し
  21.             $xml->startElement('layer');
  22.             {
  23.                 $xml->writeElement('name','detail.line');
  24.                 $xml->writeElement('description','test');
  25.  
  26.                 $xml->startElement('style');
  27.                 {
  28.                     $xml->writeElement('name','sample');
  29.                     $xml->writeElement('type','string');
  30.                     $xml->writeElement('displaylevel','all');
  31.                     $xml->writeElement('display','on');
  32.                     $xml->writeElement('transparent','off');
  33.                     $xml->writeElement('selection','off');
  34.                     $xml->writeElement('rgb','255,0,0');
  35.                     $xml->writeElement('width','4,static');
  36.  
  37.                     $xml->startElement('style');
  38.                     $xml->writeAttribute('kind','system');
  39.                     {
  40.                         $xml->text('solid');
  41.                     }
  42.                     $xml->endElement();
  43.                 }
  44.                 $xml->endElement();
  45.  
  46.                 $xml->startElement('curve');
  47.                 {
  48.                     $xml->startElement('GM_Curve');
  49.                     $xml->writeAttribute('id','id1');
  50.                     {
  51.                         $xml->startElement('CRS');
  52.                         $xml->writeAttribute('uuidref',$uuidref);
  53.                         $xml->endElement();
  54.  
  55.                         $xml->startElement('proxy');
  56.                         $xml->writeAttribute('idref','id1');
  57.                         $xml->endElement();
  58.  
  59.                         $xml->startElement('proxy');
  60.  
  61.  
  62.                         {
  63.                             $xml->startElement('GM_OrientableCurve');
  64.                             $xml->writeAttribute('id','_id1');
  65.                             {
  66.                                 $xml->startElement('proxy');
  67.                                 $xml->writeAttribute('idref','id1');
  68.                                 $xml->endElement();
  69.                                 $xml->startElement('proxy');
  70.                                 $xml->writeAttribute('idref','_id1');
  71.                                 $xml->endElement();
  72.  
  73.                                 $xml->writeElement('orientation','-');
  74.  
  75.                                 $xml->startElement('primitive');
  76.                                 $xml->writeAttribute('idref','id1');
  77.                                 $xml->endElement();
  78.                             }
  79.                             $xml->endElement();
  80.                         }
  81.                         $xml->endElement();
  82.  
  83.                         $xml->writeElement('orientation','+');
  84.                         $xml->startElement('primitive');
  85.                         $xml->writeAttribute('idref','id1');
  86.                         $xml->endElement();
  87.  
  88.                         $xml->startElement('segment');
  89.                         {
  90.                             $xml->startElement('GM_LineString');
  91.                             {
  92.                                 $xml->writeElement('interpolation','linear');
  93.  
  94.                                 $xml->startElement('controlPoint');
  95.                                 {
  96.                                     // 座標1
  97.                                     $xml->startElement('column');
  98.                                     {
  99.                                         $xml->startElement('direct');
  100.                                         {
  101.                                             $xml->writeElement('coordinate','139.579361 35.707272');
  102.                                         }
  103.                                         $xml->endElement();
  104.                                     }
  105.                                     $xml->endElement();
  106.  
  107.                                     // 座標2
  108.                                     $xml->startElement('column');
  109.                                     {
  110.                                         $xml->startElement('direct');
  111.                                         {
  112.                                             $xml->writeElement('coordinate','139.572611 35.700181');
  113.                                         }
  114.                                         $xml->endElement();
  115.                                     }
  116.                                     $xml->endElement();
  117.                                 }
  118.                                 $xml->endElement();
  119.                             }
  120.                             $xml->endElement();
  121.                         }
  122.                         $xml->endElement();
  123.                     }
  124.                     $xml->endElement();
  125.  
  126.                     $xml->writeElement('name','線分1');
  127.                     $xml->writeElement('description','線分1');
  128.                     $xml->writeElement('attribute','線名=A');// 項目名と値には、「,」「=」が使えない.
  129.                 }
  130.                 $xml->endElement();
  131.             }
  132.             $xml->endElement();
  133.         }
  134.         $xml->endElement();
  135.     }
  136.     $xml->endElement();
  137.  
  138.     $xml->endDocument();
  139. }

リンク

Tags: , , ,

コメントをどうぞ