ラベル XML の投稿を表示しています。 すべての投稿を表示
ラベル XML の投稿を表示しています。 すべての投稿を表示

2014年11月30日日曜日

2 - ol3ex 30b - OSM XML example 2

「vector-osm.js(230-ol3ex.js)」は、マップを表示するための JavaScript ファイルです。

Overpass APIは、「Overpass API-OpenStreetMap Wiki(http://wiki.openstreetmap.org/wiki/Overpass_API)」の「Introduction」に、次のようにあります。

****
The Overpass API (or OSM3S) is a read-only API that serves up custom selected parts of the OSM map data. It acts as a database over the web: the client sends a query to the API and gets back the data set that corresponds to the query.
オーバーパス API(または OSM3S)は、OSM マップデータのクライアントが選択した部分を提供している読み取り専用の API です。これは、Web 上のデータベースとして機能します。すなわち、クライアントは、API にクエリを送信し、クエリに対応するデータセットを受け取ります。

Unlike the main API, which is optimized for editing, Overpass API is optimized for data consumers that need a few elements within a glimpse or up to roughly 100 million elements in some minutes, both selected by search criteria like e.g. location, type of objects, tag properties, proximity, or combinations of them. It acts as a database backend for various services.
編集用に最適化されている主要な API とは異なり、オーバーパス API は、検索基準、(例えば、場所、オブジェクトの種類、タグプロパティ、近接、またはそれらの組み合わせのような)で選択された、ちらっと見る、または、数分で最大およそ1億の要素のうち、いくつかの要素を必要とするデータコンシューマ向けに最適化されています。それは、様々なサービスのためのデータベースのバックエンドとして機能します。

Overpass API has a powerful query language (language guide, language reference, an IDE) beyond XAPI, but also has a compatibility layer to allow a smooth transition from XAPI.*
オーバーパスAPIは、XAPI 越しに強力なクエリ言語(言語ガイド、言語リファレンス、IDE)を持っていますが、また、XAPI からの円滑な移行を可能にする互換性レイヤを持っています。

To support small and well scaling OSM main services, Overpass API is run as a third party service. You can use the public visible instances:
小さくてうまいスケーリング OSM のメインサービスをサポートするために、オーバーパス API は、サードパーティのサービスとして実行されます。あなたは、パブリックビジブルインスタンスを使用することができます。

http://overpass-api.de/ with query base address http://overpass-api.de/api/ (4 physical cores, 32 GB RAM).
http://overpass.osm.rambler.ru/ with query base address http://overpass.osm.rambler.ru/cgi/ (8 cores, 64 GB RAM).
Overpass API on openstreetmap.fr
*****

「230-ol3ex.js」
var styles = {
 'amenity': {
  'parking': [
   new ol.style.Style({
   /** ol.style.Style 
    * Base class for vector feature rendering styles.
    * ベクタフィーチャがスタイルを描画するための基本クラス。
    * (ol3 API)
    */
    stroke: new ol.style.Stroke({
    /** ol.style.Stroke 
     * Set stroke style for vector features. 
     * Note that the defaults given are the Canvas defaults, 
     * which will be used if option is not defined. 
     * The get functions return whatever was entered 
     * in the options;  they will not return the default.
     * ベクタフィーチャのためのストロークスタイルの設定。
     * デフォルトは、オプションが定義されていない場合に使用される
     * Canvas のデフォルトを与えられることに注意してください。 
     * GET機能は、オプションで入力されたものはすべて返します。
     * それらはデフォルトを返しません。(ol3 API)
     */
     color: 'rgba(170, 170, 170, 1.0)',
     width: 1
    }),
    fill: new ol.style.Fill({
    /** ol.style.Fill 
     * Set fill style for vector features.
     * ベクタフィーチャの塗りつぶしスタイルを設定。(ol3 API)
     */
     color: 'rgba(170, 170, 170, 0.3)'
    })
   })
  ]
 },
 'building': {
  '.*': [
   new ol.style.Style({
    zIndex: 100,
    stroke: new ol.style.Stroke({
     color: 'rgba(246, 99, 79, 1.0)',
     width: 1
    }),
    fill: new ol.style.Fill({
     color: 'rgba(246, 99, 79, 0.3)'
    })
   })
  ]
 },
 'highway': {
  'service': [
   new ol.style.Style({
    stroke: new ol.style.Stroke({
     color: 'rgba(255, 255, 255, 1.0)',
     width: 2
    })
   })
  ],
  '.*': [
   new ol.style.Style({
    stroke: new ol.style.Stroke({
     color: 'rgba(255, 255, 255, 1.0)',
     width: 3
    })
   })
  ]
 },
 'landuse': {
  'forest|grass|allotments': [
   new ol.style.Style({
    stroke: new ol.style.Stroke({
     color: 'rgba(140, 208, 95, 1.0)',
     width: 1
    }),
    fill: new ol.style.Fill({
     color: 'rgba(140, 208, 95, 0.3)'
    })
   })
  ]
 },
 'natural': {
  'tree': [
   new ol.style.Style({
    image: new ol.style.Circle({
    /** ol.style.Circle
     * Set circle style for vector features.
     * ベクタフィーチャの円のスタイルを設定。(ol3 API)
     */
     radius: 2,
     fill: new ol.style.Fill({
      color: 'rgba(140, 208, 95, 1.0)'
     }),
     stroke: null
    })
   })
  ]
 }
};
var vectorSource = new ol.source.ServerVector({
/** ol.source.ServerVector 
 * A vector source in one of the supported formats, using 
 * a custom function to read in the data from a remote server.
 * リモートサーバからのデータを読むためのカスタムファンクション
 * (独自関数)を使うための、サポートされたフォーマットのベクタ
 * ソース。(ol3 API)
 */
 format: new ol.format.OSMXML(),
 /** ol.format.OSMXML 
  * Feature format for reading data in the OSMXML format.
  * OSMXML フォーマットのデータを読み込むためのフィーチャ
  * フォーマット(ol3 API)
  */
 loader: function(extent, resolution, projection) {
  var epsg4326Extent =
   ol.proj.transformExtent(extent, projection, 'EPSG:4326');
   /** ol.proj.transformExtent(extent, source, destination)
    * Transforms an extent from source projection to 
    * destination projection. This returns a new extent 
    * (and does not modify the original).
    * ソースの投影法から変換先の投影法へ範囲を変換します。
    * これは、新しい範囲(オリジナルを変形しません)を返します。
    * (ol3 API)
    */
  var url = 'http://overpass-api.de/api/xapi?map?bbox=' +
   epsg4326Extent.join(',');
  $.ajax(url).then(function(response) {
  /** $.ajax( [url] [, settings] )
   * 非同期HTTP通信(Ajax)を行い、データの取得・処理を行います。
   * [url] String リクエスト送信先のURL
   * [settings] Object Ajaxリクエストでのオプションを記述した
   * オブジェクト(jQuery)
   */
   vectorSource.addFeatures(vectorSource.readFeatures(response));
  });
 },
 strategy: ol.loadingstrategy.createTile(new ol.tilegrid.XYZ({
 /** ol.loadingstrategy 
  * Strategies for loading vector data.
  * ベクタデータをローディングするための方法。
  * createTile 
  * ol.loadingstrategy のメソッド
  * (ol3 API)
  */
 /** ol.tilegrid.XYZ
  * Set the grid pattern for sources accessing XYZ 
  * tiled-image servers.
  * XYZタイル画像サーバにアクセスするソースのグリッドパターンを
  * 設定します。(ol3 API)
  */
  maxZoom: 19
 })),
 projection: 'EPSG:3857'
});
var vector = new ol.layer.Vector({
/** ol.layer.Vector
 * Vector data that is rendered client-side.
 * クライアント側で描画されたベクタデータ。(ol3 API)
 */
 source: vectorSource,
 style: function(feature, resolution) {
  for (var key in styles) {
   var value = feature.get(key);
   /** get(key)
    * Gets a value.
    * (ol3 API[説明は Stable Only のチェックを外すと表示])
    */
    if (value !== undefined) {
     for (var regexp in styles[key]) {
      if (new RegExp(regexp).test(value)) {
      /** RegExp
       * パターンに従ったテキストにマッチする正規表現オブジェク
       * トを生成します。
       * (MDN[https://developer.mozilla.org/ja/docs/Web/
       *  JavaScript/Reference/Global_Objects/RegExp])
       */
       /** RegExp.prototype.test()
        * 正規表現と対象の文字列の間のマッチを調べるための検索を
        * 実行し、結果を示す真偽値 ( true / false )を返します。
        * (MDN[https://developer.mozilla.org/ja/docs/Web/
        * JavaScript/Reference/Global_Objects/RegExp/test])
        */
       return styles[key][regexp];
      }
     }
    }
  }
  return null;
 }
});
var raster = new ol.layer.Tile({
/** ol.layer.Tile 
 * For layer sources that provide pre-rendered, tiled 
 * images in grids that are organized by zoom levels for 
 * specific resolutions. 
 * プリレンダリング(事前描画)を提供するレイヤソースのための、
 * 特定の解像度でのズームレベルによって編成されているグリッドの
 * タイルイメージ。(ol3 API)
 */
 source: new ol.source.BingMaps({
 /** ol.source.BingMaps
  * Layer source for Bing Maps tile data.
  * Bing Maps タイルデータのレイヤソース。(ol3 API)
  */
  imagerySet: 'Aerial',
  key: 'Ak-dzM...(省略)'
 })
});
var map = new ol.Map({
 layers: [raster, vector],
 target: document.getElementById('map'),
 controls: ol.control.defaults({
 /** controls
  * Controls initially added to the map. 
  * If not specified, ol.control.defaults() is used.
  * 初期設定で、マップに追加されたコントロール。
  * 明示されていなければ、ol.control.defaults() が使用されます。
  * (ol3 API)
  */
 /** ol.control.defaults()
  * デフォルトでは、マップに含まコントロールのセット。
  * 特に設定しない限り、これは、以下の各コントロールの
  * インスタンスを含むコレクションを返します。(API Doc より)
  * ol.control.Zoom, ol.control.Rotate, ol.control.Attribution
  */
  attributionOptions: /** @type {olx.control.AttributionOptions} */ ({
  /** @type 
   * 値のタイプ(型)の説明 - 式などで表示
   * attributionOptions の値の型は、
   * olx.control.AttributionOptions の型を使用。
   * (@use JSDoc[http://usejsdoc.org/]より)
   */
  collapsible: false // 折りたたみ
  })
 }),
 view: new ol.View({
  center: [739218, 5906096],
  maxZoom: 19,
  zoom: 17
 })
});


2 - ol3ex 30a - OSM XML example 1

「OSM XML example(vector-osm.html)」を参考に地図を表示してみます。

HTML ファイルの作成
a Eclipse のメニューの「ファイル」->「ファイルを開く」をクリックします。





b 「ファイルを開く」ウィンドウで、「user」->「mapsite」->「ol3proj」->「v3.0.0」->「examples」->「vector-osm.html」をクリックして選択し、「OK」ボタンをクリックします。
同じように「vector-osm.js」を開きます。





c メニューの「ファイル」->「新規」 -> 「ファイル」をクリックします。



d 「ファイル」ウィンドウで「ol3proj」をクリックして選択し、「ファイル名」を「230-ol3ex.html」と入力し、「次へ」ボタンをクリックします。








e 「File Template」ウィンドウで「HTML 5 Template」をクリックして選択し、「OK」ボタンをクリックします。











f 「vector-osm.html」の内容をコピーして「230-ol3ex.html」に貼り付け、修正します。
g 同じように、新規に「230-ol3ex.js」ファイルを作成し、「File Template」ウィンドウで「JavaScript Template」をクリックして選択し、「完了」ボタンをクリックして、「vector-osm.js」の内容をコピーして貼り付け、修正します。「vector-osm-require.js」も「230-ol3ex-require.js」に貼り付けます。


「230-ol3ex.html」
<!doctype html>
<html lang="en">
 <head>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="chrome=1">
  <meta name="viewport" content="initial-scale=1.0, user-scalable=no, width=device-width">
<!--
  <link rel="stylesheet" href="../css/ol.css" type="text/css">
  <link rel="stylesheet" href="../resources/bootstrap/css/bootstrap.min.css" type="text/css">
  <link rel="stylesheet" href="../resources/layout.css" type="text/css">
  <link rel="stylesheet" href="../resources/bootstrap/css/bootstrap-responsive.min.css" type="text/css">
-->
  <!-- ディレクトリ修正 -->
  <link rel="stylesheet" href="v3.0.0/css/ol.css" type="text/css">
  <link rel="stylesheet" href="v3.0.0/resources/bootstrap/css/bootstrap.min.css" type="text/css">
  <link rel="stylesheet" href="v3.0.0/resources/layout.css" type="text/css">
  <link rel="stylesheet" href="v3.0.0/resources/bootstrap/css/bootstrap-responsive.min.css" type="text/css">
  <title>OSM XML example</title>
 </head>
 <body>
  <!-- 
  bootstrap.min.css, bootstrap-responsive.min.css で設定されたセレクタを使用。
  -->
  <div class="navbar navbar-inverse navbar-fixed-top">
   <div class="navbar-inner">
    <div class="container">
<!--
     <a class="brand" href="./"><img src="../resources/logo.png"> OpenLayers 3 Examples</a>
-->
      <!-- ディレクトリ修正 -->
     <a class="brand" href="v3.0.0/examples/"><img src="v3.0.0/resources/logo.png"> OpenLayers 3 Examples</a>
    </div>
   </div>
  </div>
  <div class="container-fluid">
   <div class="row-fluid">
    <div class="span12">
     <div id="map" class="map"></div>
    </div>
   </div>
   <div class="row-fluid">
    <div class="span4">
     <h4 id="title">OSM XML example</h4>
     <p id="shortdesc">Example of using the OSM XML source.  Vector data is loaded dynamically from a server using a tiling strategy.</p>
<!--
      <p>See the <a href="vector-osm.js" target="_blank">vector-osm.js source</a> to see how this is done.</p>
-->
       <!-- ファイル修正 -->
      <p>See the <a href="230-ol3ex.js" target="_blank">230-ol3ex.js source</a> to see how this is done.</p>
     </div>
     <div id="tags">vector, osm, xml, loading, server</div>
    </div>
    <div class="span4 offset4">
     <div id="info" class="alert alert-success">
      &nbsp;
     </div>
    </div>
   </div>
  </div>
<!--
  <script src="jquery.min.js" type="text/javascript"></script>
  <script src="../resources/example-behaviour.js" type="text/javascript"></script>
-->
  <!-- ディレクトリ修正
   jQuery Minified版と
   example-behaviour.js(Examples用 JSコード[文字コードなど])
  -->
  <script src="v3.0.0/examples/jquery.min.js" type="text/javascript"></script>
  <script src="v3.0.0/resources/example-behaviour.js" type="text/javascript"></script>
<!--
  <script src="loader.js?id=tile-vector" type="text/javascript"></script>
-->
  <!-- ファイル修正 -->  <!-- ディレクトリ修正 -->
  <script src="loader.js?id=230-ol3ex" type="text/javascript"></script>

 </body>
</html>

2009年11月11日水曜日

OpenLayers 24e OpenLayers の XMLデータ処理

前回の Jugl Template Library で GMLデータを処理する前に、見当違いで XMLデータの処理をテストしていました。

XML データ処理を試す前に OpenLayers.loadURL をみてみます。

Ajax の HTTP 通信に Internet Explorer では ActiveXObject("Msxml2.XMLHTTP") をそれ以外のブラウザでは XMLHttpRequest() を使用します。
この2つのオブジェクトを仮に oj とすれば open メソッドを使い、次のようにファイルをロードします。

oj.open("GET", "./test.xml", true);

"GET" には、"GET" または "POST" が入り、ファイルに直接パラメータを追加します。

oj.open("GET", "./test.xml?sort=faverit", true);

"POST" では send() メソッドに引数を渡します。

oj.open("POST", "./test.xml", true);
request.send("sort=favorite");

"./test.xml" はファイルの場所。
true は、非同期/同期の設定で、true または省略で非同期です。

全体は,例えば次のようになります。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/2000/REC-xhtml1-20000126/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>XML Load Test</title>
<script src="./trunk/build/jugl.js"></script>
</head>
<body>

<!-- XML処理マークアップ6 -->

<h2>JavaScript の XML処理</h2>
<div id="loadStatus">loading..</div>
<br />
<div id="template_id6">
<div jugl:content="node"></div>

<!-- HTTPRequest -->

<script type="text/javascript">
var res, oj, node;
function createHttpRequest() {
if (window.ActiveXObject) {
try {
return new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e) {
return null
}
}
else if (window.XMLHttpRequest) {
return new XMLHttpRequest();
}
else {
return null
}
}

var oj = createHttpRequest();

// XML ファイルの読み込みと処理

oj.open("GET", "./jugl_flickr.xml", true);
oj.send(null);
oj.onreadystatechange = function(){
if (oj.readyState == 4 && oj.status == 200) {
updateStatus("loaded");
on_loaded(oj);
}
else {
updateStatus("unloaded");
}
}


function on_loaded(oj){
res = oj.responseXML;
node = res.documentElement.nodeName;
(new jugl.Template("template_id6")).process();
}

function updateStatus(msg) {
document.getElementById("loadStatus").firstChild.nodeValue = msg;
}
</script>
</body>
</html>

OpenLayers では次のようになります。(詳細はオンラインドキュメントをみてください。)

var url = "./test.xml";
OpenLayers.loadURL(url, null, null, onSuccessFunc, onFailureFunc);

1番目(url) は、ファイルの場所。
2番目(null)は、GET パラメータ(上記の GET と同じ)。
3番目(null)は、コールバック関数を渡したオブジェクト。
4番目(onSuccessFunc)は、ロード成功時のコールバック関数。
5番目(onSuccessFunc)は、ロード失敗時のコールバック関数。

です。

jugl_test.html に次のように追加します。

---
<!-- 「jugl:attributes を使うマークアップ4」 の直後-->
<h2>OpenLayers の XML処理</h2>
<!-- XML処理マークアップ5 -->
<div id="loadStatus2">loading..</div>
<br />
<div id="template_id5">
<div jugl:content="string"></div>
</div>

<script type="text/javascript">
//<![CDATA[
// 処理コード4
---
// 「処理コード4」の直後
// 処理コード5
var string;
var format2 = new OpenLayers.Format.XML();
var doc = null;

function loadSuccess2(request) {
updateStatus2("loaded");
if(!request.responseXML.documentElement) {
doc = format2.read(request.responseText);
} else {
doc = request.responseXML;
}
string = doc.documentElement.nodeName;
(new jugl.Template("template_id5")).process();
}

function updateStatus2(msg2) {
document.getElementById("loadStatus2").firstChild.nodeValue = msg2;
}
//]]></script>


次のコードはルートノードの名前を表示します。

string = doc.documentElement.nodeName;

結果は、

OpenLayers の XML処理
loaded
wfs:FeatureCollection

通常の Ajax の処理でも(当然ですが)同じ結果になります。

Jugl を試しているときに、次のコードでノードプロパティが表示されることを見つけました。
マークアップ(HTML)部分を

<div jugl:repeat="item node">
<div jugl:content="item + ': ' + node[item]"></div>
</div>

として、string = doc.documentElement.nodeName; を次のコードに換えます。

string = doc.documentElement;

結果は、

nodeName: wfs:FeatureCollection
tagName: wfs:FeatureCollection
getElementsByTagNameNS: function getElementsByTagNameNS() { [native code] }
firstChild: [object Text]
nodeType: 1
childNodes: [object NodeList]
---

これはルートノードのプロパティです。


OpenLayers の examples の XML Parsing Example(xml.html)で OpenLayers の XMLデータ処理をしています。
そこで使われているものがここのプロパティ一覧にあります。


string = doc.documentElement; を次のコードに換えます。

string = doc.documentElement.childNodes;

結果は、

0: [object Text]
1: [object Element]
2: [object Text]
3: [object Element]
4: [object Text]
length: 5
item: function item() { [native code] }

子ノードの数(length doc.documentElement.childNodes.lemgthの結果と同じ)が5個になります。
item とあるので次の様にして結果をみてみます。

string = doc.documentElement.childNodes.itme(0);

結果は、(nodeName だけ)

itme(0): nodeName: #text
itme(1): nodeName: gml:featureMember
itme(2): nodeName: #text
itme(3): nodeName: gml:featureMember
itme(4): nodeName: #text

コードを次の様に換えて結果をみます。

string = doc.documentElement.childNodes.itme(0).childNodes;


item(偶数) の結果は、

length: 0
item: function item() { [native code] }

で中身はありません。


item(奇数) の結果は、

0: [object Element]
length: 1
item: function item() { [native code] }

で、さらに次のコードに換えて結果をみます。

string = doc.documentElement.childNodes.itme(1).childNodes.itme(0);

結果は、

nodeName: fs:flickr
---(以下省略)

で、さらに次のコードに換えて結果をみます。

string = doc.documentElement.childNodes.itme(1).childNodes.itme(0).childNodes;

結果は、

0: [object Text]
1: [object Element]
2: [object Text]
3: [object Element]
---
length: 33
item: function item() { [native code] }

コードを次の様に換えて結果をみます。
上記の結果の奇数だけ確かめます。

string = doc.documentElement.childNodes.item(1).childNodes.item(0).childNodes.item(1);

結果は、(nodeName だけ)

itme(1): nodeName: fs:geometry
itme(3): nodeName: fs:isfamily
---
itme(9): nodeName: fs:title
---
itme(25): nodeName: fs:img_url
---

で、各ノードのプロパティに textContent とあるのでつぎのようにコードを換えると

マークアップ部分

<div jugl:content="string"></div>

string = doc.documentElement.childNodes.item(1).childNodes.item(0).childNodes.item(1).textContent;

itme(1).textContent: 139.77701,35.713345
itme(3),textContent: 0
---
itme(11).textContent: near Uenokouen
---
itme(25).textContent: http://farm3.static.flickr.com/2626/4052485410_519b430129_m.jpg
---

になります。

2009年10月12日月曜日

OpenLayers 20b georss_nishitachikawa.xml の内容

georss_nishitachikawa.xml の内容

<?xml version='1.0' encoding='UTF-8'?>
<rss
xmlns:atom='http://www.w3.org/2005/Atom'
xmlns:gphoto='http://schemas.google.com/photos/2007'
xmlns:media='http://search.yahoo.com/mrss/'
xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/'
xmlns:gml='http://www.opengis.net/gml'
xmlns:georss='http://www.georss.org/georss' version='2.0'>
<channel>
<atom:id>
http://picasaweb.google.co.jp/data/feed/base/user/[user_id]/albumid/5388317799181820769
</atom:id>
<lastBuildDate>Mon, 05 Oct 2009 05:54:44 +0000</lastBuildDate>
<category domain='http://schemas.google.com/g/2005#kind'>
http://schemas.google.com/photos/2007#album
</category>
<title>Keitai</title>
<description>携帯カメラのテスト</description>
<image>
<url>
http://lh5.ggpht.com/_hoHiidZPh8U/SscmfWUlo2E/AAAAAAAAAf4/IDq40oWopRw/s160-c/FiPgXD.jpg
</url>
<title>Keitai</title>
<link>
http://picasaweb.google.co.jp/[user_id]/FiPgXD?authkey=Gv1sRgCIPekYa995iu_wE
</link>
</image>
<link>
http://picasaweb.google.co.jp/[user_id]/FiPgXD?authkey=Gv1sRgCIPekYa995iu_wE
</link>
<managingEditor>Noboru</managingEditor>
<generator>Picasaweb</generator>
<openSearch:totalResults>1</openSearch:totalResults>
<openSearch:startIndex>1</openSearch:startIndex>
<openSearch:itemsPerPage>1000</openSearch:itemsPerPage>
<gphoto:allowPrints>true</gphoto:allowPrints>
<gphoto:allowDownloads>true</gphoto:allowDownloads>
<item>
<guid isPermaLink='false'>
http://picasaweb.google.co.jp/data/entry/base/user/[user_id]/albumid/5388317799181820769/photoid/5388317803734361330?alt=rss&hl=ja
</guid>
<pubDate>Sat, 03 Oct 2009 10:25:02 +0000</pubDate>
<atom:updated>2009-10-03T10:25:02.802Z</atom:updated>
<category domain='http://schemas.google.com/g/2005#kind'>
http://schemas.google.com/photos/2007#photo
</category>
<title>NEC_0036a.JPG</title>
<description>
<table><tr><td style="padding: 0 5px"><a href="http://picasaweb.google.co.jp/[user_id]/FiPgXD?authkey=Gv1sRgCIPekYa995iu_wE#5388317803734361330"><img style="border:1px solid #5C7FB9" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhvMJAUF6oU1FbubOFLgjwdmd70FFAMneqYrJsDe9lkCLo-sQPDSt4309Fm33d1LAEPIb3WYQg14aw1P6u-Pi7qlWolkU1fsqxyZ10EQe9sHVdt7YAR1M55gi5oBH2rL8hTaV7KqBr4ui-D/s288/NEC_0036a.JPG" alt="NEC_0036a.JPG"/></a></td><td valign="top"><font color="#6B6B6B">日付: </font><font color="#333333">2008/11/03 8:08</font><br/><font color=\"#6B6B6B\">写真のコメントの数:</font><font color=\"#333333\">0</font><br/><p><a href="http://picasaweb.google.co.jp/[user_id]/FiPgXD?authkey=Gv1sRgCIPekYa995iu_wE#5388317803734361330"><font color="#3964C2">写真を表示</font></a></p></td></tr></table>
</description>
<enclosure type='image/jpeg' url='https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhvMJAUF6oU1FbubOFLgjwdmd70FFAMneqYrJsDe9lkCLo-sQPDSt4309Fm33d1LAEPIb3WYQg14aw1P6u-Pi7qlWolkU1fsqxyZ10EQe9sHVdt7YAR1M55gi5oBH2rL8hTaV7KqBr4ui-D/' length='0'/>
<link>
http://picasaweb.google.co.jp/[user_id]/FiPgXD?authkey=Gv1sRgCIPekYa995iu_wE#5388317803734361330
</link>
<media:group>
<media:content url='https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhvMJAUF6oU1FbubOFLgjwdmd70FFAMneqYrJsDe9lkCLo-sQPDSt4309Fm33d1LAEPIb3WYQg14aw1P6u-Pi7qlWolkU1fsqxyZ10EQe9sHVdt7YAR1M55gi5oBH2rL8hTaV7KqBr4ui-D/' height='480' width='640' type='image/jpeg' medium='image'/>
<media:credit>Noboru</media:credit>
<media:description type='plain'/>
<media:keywords/>
<media:thumbnail url='https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhvMJAUF6oU1FbubOFLgjwdmd70FFAMneqYrJsDe9lkCLo-sQPDSt4309Fm33d1LAEPIb3WYQg14aw1P6u-Pi7qlWolkU1fsqxyZ10EQe9sHVdt7YAR1M55gi5oBH2rL8hTaV7KqBr4ui-D/s72/NEC_0036a.JPG' height='54' width='72'/>
<media:thumbnail url='https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhvMJAUF6oU1FbubOFLgjwdmd70FFAMneqYrJsDe9lkCLo-sQPDSt4309Fm33d1LAEPIb3WYQg14aw1P6u-Pi7qlWolkU1fsqxyZ10EQe9sHVdt7YAR1M55gi5oBH2rL8hTaV7KqBr4ui-D/s144/NEC_0036a.JPG' height='108' width='144'/>
<media:thumbnail url='https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhvMJAUF6oU1FbubOFLgjwdmd70FFAMneqYrJsDe9lkCLo-sQPDSt4309Fm33d1LAEPIb3WYQg14aw1P6u-Pi7qlWolkU1fsqxyZ10EQe9sHVdt7YAR1M55gi5oBH2rL8hTaV7KqBr4ui-D/s288/NEC_0036a.JPG' height='216' width='288'/>
<media:title type='plain'>NEC_0036a.JPG</media:title>
</media:group>
<georss:where>
<gml:Point>
<gml:pos>35.703871 139.393716</gml:pos>
</gml:Point>
</georss:where>
</item>
</channel>
</rss>