Azel_TvT
@Azel_TvT (水野 孝星)

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

GPXParser.jsでファイルが読み込めない。

初めまして。
Node.jsでGPXファイルを読み込み、GPXファイルの中から最高高度や発着時間などを取得するプログラムを作成したいと考えています。
fsとGPX Parser.jsというnpmを使用して以下のようなプログラムを作成しましたが、高度や時間などが取得されません。
おそらくファイルが読み込まれていないのでは?という結論に至ったものの、何が原因で読み込まれていないのかがわかりません。
下記のコードはfsでGPXfileのの中身を丸々変数に格納し、それをGPXParser.jsで読み込み、抽出した情報を出力するプログラムです。
何かわかる方いましたらご教授いただければ幸いです。

Node.js
app.get('/test_gpx' , (req, res) => {
  const file = fs.createWriteStream("file.gpx");
  http.get("filepath", response => {
  response.pipe(file);
  const fs = require("fs");

  const stream = fs.createReadStream("./file.gpx", {
                    encoding: "utf8",         
                    highWaterMark: 1024       
                });

  let count = 0;    
  let total = 0;
  let chunk;
  global.variable_chunk;

  stream.on("readable", () => {
    while ( ( chunk = stream.read()) !== null ) {
      count++;
      total +=  chunk.length;
      global.variable_chunk = global.variable_chunk + chunk;
    }
  });
  stream.on("end", () => {
    
    console.log(`${count}回に分けて取得しました`);
    console.log(`合計${total}byte取得しました`);
    var gpx = new gpxParser();
    console.log(global.variable_chunk); 
    gpx.parse(global.variable_chunk); 
    var track = gpx.tracks ;
    var routes = gpx.routes;
    var metadata = gpx.metadata;
    var waypoints = gpx.waypoints;
    console.log(metadata);
    console.log(waypoints);
    console.log(routes);
    console.log(track);
  });
  });
});
});

サンプルgpxfile

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<gpx version="1.1" creator="GPS Visualizer https://www.gpsvisualizer.com/" xmlns="http://www.topografix.com/GPX/1/1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd">
<trk>
  <name>2021-10-03-XNA-NMQ-01</name>
  <desc>2021-10-03</desc>
  <trkseg>
<trkpt lat="35.8958" lon="137.2043167">
      <ele>437.0</ele>
      <time>2021-10-03T03:53:32Z</time>
    </trkpt>
    <trkpt lat="35.8957833" lon="137.2043167">
      <ele>436.0</ele>
      <time>2021-10-03T03:53:33Z</time>
    </trkpt>
    <trkpt lat="35.8957833" lon="137.2043167">
      <ele>435.0</ele>
      <time>2021-10-03T03:53:34Z</time>
    </trkpt>
    <trkpt lat="35.8957667" lon="137.2043167">
      <ele>435.0</ele>
      <time>2021-10-03T03:53:35Z</time>
    </trkpt>
    <trkpt lat="35.89575" lon="137.2043333">
      <ele>435.0</ele>
      <time>2021-10-03T03:53:36Z</time>
    </trkpt>
    <trkpt lat="35.89575" lon="137.2043333">
      <ele>434.0</ele>
      <time>2021-10-03T03:53:37Z</time>
    </trkpt>
  </trkseg>
</trk>
</gpx>
C:>node app.js
Server running at 80
success
976回に分けて取得しました
合計998714byte取得しました
{
  type: 'FeatureCollection',
  features: [],
  properties: {
    name: undefined,
    desc: undefined,
    time: undefined,
    author: undefined,
    link: undefined
  }
}
{}
[]
[]
[]
0

1Answer

Comments

  1. @Azel_TvT

    Questioner

    こんな簡潔にかけたんですね...。
    GPXParser.jsでファイル読み込めるの初めて知りました...。
    やはり変数で無理やり解析させようとしたのがダメだったんですかね。
    なにはともあれ本当にありがとうございます。

Your answer might help someone💌