Giter Club home page Giter Club logo

wmap's Introduction

Wmap

Build Status

このプロジェクトでは、 Excel や CSV のオープンデータから簡単にウェブベースのモバイルアプリを作れるようにすることを目標にしています。

このプロジェクトの特徴

  • data/ ディレクトリ内に CSV や Excel ファイルを設置して npm コマンドを実行するだけで、それらのデータが JSON API に変換されモバイルアプリ上に表示されます。
  • config.jsonREADME.md を編集することで、トップページやタイトルなどをカスタマイズすることができます。
  • 開発環境をあらかじめ構築済みなので、プログラミング初心者でもすぐにはじめることができます。
  • Riot.js の柔軟でわかりやすいカスタムタグにより、さらに一歩踏み込んだカスタマイズも可能です。

はじめかた

Git と Node.js がインストール済みの環境であれば、以下のコマンドですぐに試すことができます。

$ git clone [email protected]:wakayama-hacker/wmap.git
$ cd wmap
$ npm install
$ npm run build
$ npm start

データのカスタマイズ

data/ ディレクトリに以下のフォーマットの CSV ファイル、または Excel ファイルを設置してください。

menu title lat lng content
串本 橋杭岩 33.488547 135.795751 これは橋杭岩です。
串本 潮岬 33.437084 135.755906 本州最南端の潮岬です。
白浜 円月島 33.690140 135.337222 円月島です。

CSV の場合、以下のようなフォーマットになります。

menu,title,lat,lng,content
串本,橋杭岩,33.488547,135.795751,これは橋杭岩です。
串本,潮岬,33.437084,135.755906,本州最南端の潮岬です。
白浜,円月島,33.690140,135.337222,円月島です。

データの編集が終わったら以下のコマンドでビルドしてください。

$ npm run build

wmap's People

Contributors

miya0001 avatar naogify avatar kamataryo avatar amuy841 avatar torounit avatar yoheitaniguchi avatar

Stargazers

 avatar Gaku avatar  avatar  avatar

Watchers

 avatar James Cloos avatar Tarosa avatar Gaku avatar  avatar m.okada avatar  avatar  avatar

wmap's Issues

GeoJSONへの対応

CSVの列にGeoJSONへのパスまたはURLがあればそれを引っ張ってくるみたいな。

CSVからJSONに変換するGulpプラグインをつくる

CSVのフォーマットは以下のとおり

menu,title,lat.lng,content,...
串本,橋杭岩,12.345,123.45,これは橋杭岩です,...

これを以下のようなフォーマットのJSONに変換する

{
  "串本": [
    {
      "title": "橋杭岩"
      "lat": "12.345",
      "lng": "123.45",
      "content": "これは橋杭岩です"
    },
    {
      ...
    },
    ...
  ]
}

JSONのキャッシュ対策

CSVからJSONに変換する際に生成されるIDを連番ではなくランダムな固定長の文字列、たとえばmd5などに変更する。
この文字列はgulpを実行するたびに毎回ランダムな値になったほうがいいかも。

config.json.dist

デフォルトではconfig.json.distを読み込む。もし config.json があればそっちを読み込む。

csv2json Gulpプラグインの異常系のテスト

#9 の子issue
以下の異常系のテストをする

  • csvファイルが空の場合(ファイルは無視される)
  • csvファイルのヘッダに menuがない場合(ファイルは無視されるべき?)
  • csvに空白行がある場合(無視される)
  • csvのボディの要素数がヘッダーに対して足りない時(当該行は無視されるべき?)
  • csvのボディの要素数がヘッダーに対して多い時(多い分は無視される)

APIとアプリケーションの分離

CSVやExcelからAPIを生成してgh-pagesを提供する部分を、別のリポジトリにわけたほうがいいかも。

メリット

  • アプリケーションのリポジトリがシンプルになる。
  • いろんなデータでのデモがやりやすい
  • いろんなユースケースを想定しやすくなるかも

デメリット

  • ドキュメントの導線がわかりにくくなるかも
  • 説明がめんどくさくなるかも

LICENSEをどうする?

MITにしたいけどLeafletがそうではないので、最適なものがどれなのかを調べる

CSVのパーサーの修正

@kamataryo

CSVのパースの部分のソースをみたんですが、これだと改行付きのCSVとかエスケープに対応してないようなので、オープンソースのパーサーを探してそれをつかったほうがいいかもです。

OSMを表示するタグ

<open-street-map></open-street-map>

riot.mount( 'open-street-map', {
  address: '住所',
  lat: 'xxxx',
  lang: 'xxxx'
} )

のように住所からでも地図からでもコンテンツを表示できるとベター。

写真

ギャラリー的な何かを表示できるタグ

Support localization into other languages

How can Wmap be localized into other languages, such as English?

It would not be a good idea to simply add lots of new columns to the CSV format. For instance, then each top level menu would have to be translated over and over again.

Strings files on Apple platforms are one solution. They provide a mapping of each unique string to its translation for a given language. So this way each top-level menu item only needs to be translated once.

CSVにインデックスの付与

@kamataryo

重ね重ねすいませんが、CSVの各行をパースしてJSONにする際に数字のIDを付与できません?
現状一番左の列をIDにしてますが、セキュリティ的にやはりきもちわるいので、連番で数字を振ってそれをIDとしてメニューで使いたいなーと。

情報のジャンルでデータを分ける

観光地の情報といっても色んな分類があると思います。大まかにその情報を小分けにして、入手したいジャンルの情報を抜き出せるようにしたらいいと思います。(例えば「海」、「山」、「体験」といったタグをつける等...)

Distance calculation

距離を近似式で求めるJavaScriptの関数を作ってみました。
現在地と近い順に並べたりするのに使うのであれば、この程度の精度でも良いのではないかと思います。

//calcDistance(緯度1, 経度1, 緯度2, 経度2)
//2点間の距離(km)を近似式で求めます。
//x に紀伊田辺駅(33.733058, 135.384144)と串本駅(33.475527, 135.781603)の距離を求める場合
//x = calcDistance(33.733058, 135.384144, 33.475527, 135.781603);

function calcDistance(n1, t1, n2, t2)
{
  var r = 3.1415926535 / 180;
  n1 *= r;
  t1 *= r;
  n1 -= ((11.55 / 60) * r) * Math.sin(2 * n1);
  n2 *= r;
  t2 *= r;
  n2 -= ((11.55 / 60) * r) * Math.sin(2 * n2);
  var c = Math.cos(n1) * Math.cos(n2) * Math.cos(t1 - t2) + Math.sin(n1) * Math.sin(n2);
  return Math.atan2(Math.sqrt(1 - c * c), c) * 6369;
}

deploy.sh

deploy.shでデプロイするファイルを指定しているが、不要なファイルを指定して、削除するようにしたほうがミスが少ない気がする

csv2json Gulpプラグインの複数のファイルソースへの対応

#9 の子issue
複数のCSVファイルを読み込んで統合できるように修正する。
transform時にファイルへの参照を保持しておき、flushする時に全てのファイルに対して処理をする。
以下のテストケースを追加する。

  • 複数のCSVファイルに同じmenuに属する情報が分散している時(一つのmenuのJSONに統合される)

Readmeを英語で書く

Read meを英語で記述すれば、海外の方からでも意見が貰えやすくなると思います。

エンドポイントURLを指定してCSVファイルやエクセルファイルを取り込む

データのビルドでこういうこともできると、オープンデータ利用の観点からいいかもです。
エンドポイントURLを指定して、データを収穫します。

data/endpoints

http://example.com/example.csv
http://example.com/foo/bar.xlsx

gulpfile.js

const gulp    = require( 'gulp' )
const harvest = require( './lib/harvest' )

gulp.task( 'harvest' () => {
    harvest( './data/endpoints' )
    .pipe( csv2json() )
    .pipe( gulp.dest( './json' ) )
} )

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.