diff --git a/Auto_editsys/README.md b/Auto_editsys/README.md index db0857d..00f2df4 100644 --- a/Auto_editsys/README.md +++ b/Auto_editsys/README.md @@ -1,3 +1,9 @@ +### 概要 +地図データを加えることができる UI +バックグラウンドで生データをリサイズ +名称やコメント、分類をcsvファイルとして生成 +仮 +--- ### 手法、手順 1. 何らかの端末から撮影した画像/動画(ファイル)を特定メールアドレスに送信する diff --git a/Auto_editsys/geojson_sys/make_html.rb b/Auto_editsys/geojson_sys/make_html.rb index 0611e76..93ca7f8 100644 --- a/Auto_editsys/geojson_sys/make_html.rb +++ b/Auto_editsys/geojson_sys/make_html.rb @@ -5,10 +5,10 @@ l = %w(un ko aaa) -root = Nokogiri::HTML::DocumentFragment.parse("") -Nokogiri::HTML::Builder.with(root) do |doc| +html = Nokogiri::HTML::DocumentFragment.parse("") +Nokogiri::HTML::Builder.with(html) do |doc| doc.div.nav.index do - doc.h1 "LIST" + doc.h1 "test" doc.ul do l.each.with_index do |x, i| doc.li x, class: "item-list", id: i @@ -21,5 +21,5 @@ end end -puts root.to_html +puts html.to_html diff --git a/Auto_editsys/user/.htaccess b/Auto_editsys/user/.htaccess new file mode 100644 index 0000000..1e04f45 --- /dev/null +++ b/Auto_editsys/user/.htaccess @@ -0,0 +1,3 @@ +AddHandler cgi-script .rb +Options +ExecCGI +AddType "text/html; charset=utf-8" .html diff --git a/Auto_editsys/user/comment.rb b/Auto_editsys/user/comment.rb new file mode 100644 index 0000000..6cd5551 --- /dev/null +++ b/Auto_editsys/user/comment.rb @@ -0,0 +1,58 @@ +#!/usr/bin/env ruby +# coding: utf-8 + +require "cgi" +require "pstore" + +c = CGI.new(:accept_charset => "UTF-8") +name = c["name"] +cmt = c["comment"] +time = Time.now # Time.nowで現在時刻を取得 + +# HTMLヘッダの出力 +print "Content-type: text/html; charset=UTF-8\n\n" + +print"ひとこと掲示板\n" + +print"

ひとこと掲示板

\n" + +bbs = PStore.new("data.db") +bbs.transaction do + if bbs["root"] == nil + bbs["root"] = Hash.new + end + data = bbs["root"] # ここまではおきまり + + if name >"" && cmt > "" # 名前とコメント、両方値があるなら登録 + data[name] = [time, cmt] # 今日の日付とコメント + + end + + # フォーム出力 + print"
\n" + print '

+ +名前:
+コメント
+
+ +
+


' + + # 既存のコメント出力(キー毎) + print "
\n" # 定義環境開始 + for i in data.keys.sort{|x, y| + data[y][0] <=> data[x][0] # 日付の新しい順にソート + } + day = data[i][0] # 第0要素が日付 + msg = data[i][1] # 第1要素がコメント、それぞれ取り出す + printf("
%s\n", i) # キー(つまり飲んだものの名前) + printf("
記載日: %s
\n", day.strftime("%Y/%m/%d/ %X")) + printf(" %s\n", msg) + end + print "
\n" # 定義環境終了 +end# db.transaction 終わり + +print "
\n" diff --git "a/Auto_editsys/user/data/\043histosy_data.js\043" "b/Auto_editsys/user/data/\043histosy_data.js\043" new file mode 100644 index 0000000..6b85816 --- /dev/null +++ "b/Auto_editsys/user/data/\043histosy_data.js\043" @@ -0,0 +1,8 @@ +var info = document.getElementById("info"), + update = document.getElementById("update"), + undobtn = document.getElementById("undo"), + loadbtn = document.getElementById("reload"), + namefld = document.getElementById("name"), + descfld = document.getElementById("desc"), + rmbtn = document.getElementById("remove"), + gpsbtn = document.getElementById("gps"); \ No newline at end of file diff --git "a/Auto_editsys/user/data/.\043histosy_data.js" "b/Auto_editsys/user/data/.\043histosy_data.js" new file mode 120000 index 0000000..314d010 --- /dev/null +++ "b/Auto_editsys/user/data/.\043histosy_data.js" @@ -0,0 +1 @@ +c115144@roy.e.koeki-u.ac.jp.26303 \ No newline at end of file diff --git a/Auto_editsys/user/data/data2.db b/Auto_editsys/user/data/data2.db new file mode 100644 index 0000000..68d0672 --- /dev/null +++ b/Auto_editsys/user/data/data2.db Binary files differ diff --git a/Auto_editsys/user/data/history_data.js b/Auto_editsys/user/data/history_data.js new file mode 100644 index 0000000..bbc95cc --- /dev/null +++ b/Auto_editsys/user/data/history_data.js @@ -0,0 +1,130 @@ +var tmap = + tmap|| + function() +{ + + var info = document.getElementById("info"), + update = document.getElementById("update"), + undobtn = document.getElementById("undo"), + loadbtn = document.getElementById("reload"), + namefld = document.getElementById("name"), + descfld = document.getElementById("desc"), + rmbtn = document.getElementById("remove"), + gpsbtn = document.getElementById("gps"); + + function init(logfile) { + var baseLayer = {}; + var map_osm = new L.tileLayer( // OpenStretMap + 'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', { + attribution :'© OpenStreetMap contributors', + maxZoom: 20, maxNativeZoom: 18 + }); + baseLayer["OpenStreetMap"] = map_osm; + + var map_gsi = new L.tileLayer( // 国土地理院 + 'https://cyberjapandata.gsi.go.jp/xyz/std/{z}/{x}/{y}.png', { + attribution: "国土地理院", + maxZoom: 20, maxNativeZoom: 18 + }); + baseLayer["地理院地図"] = map_gsi; + + var jsonmap = L.map('load-json', {layers: [map_gsi]}).setView([38.93272, 139.82917], 14); + var mapControl = L.control.layers(baseLayer, null).addTo(jsonmap); + L.control.scale().addTo(jsonmap); + var markerLayers = L.featureGroup(); + + + // GPS 情報の所得 + var gpsIcon = L.icon({ + iconUrl: 'img/marker.png', + iconAnchor: [12,12] + }); + var gpsmarker = null; + function gps_error() { + dispInfo("GPS信号取得失敗") + } + function gps_success(pos) { + dispInfo("GPS") + var latlng = L.latLng([pos.coords.latitude, pos.coords.longitude]); + jsonmap.panTo(latlng); + // 地図の中心を取得した位置に + if (!gpsmarker) + gpsmarker = L.marker(latlng, {icon: gpsIcon}).addTo(jsonmap); + else + gpsmarker.setLatLng(latlng); + dispInfo(latlng); + gpsbtn.disabled = false; + } + gpsbtn.addEventListener('click', function() { + gpsbtn.disabled = true; + dispInfo("位置取得中..."); + navigator.geolocation.getCurrentPosition(gps_success, gps_error, { + // enableHighAccuracy: true, + timeout: 8000, + maximumAge: 0000, + }); + }); + + var popupopenmarker = false; + function updatePopup(e) { + var elem = e.target; + if (popupopenmarker) { + let mk = popupopenmarker.marker, + pr = popupopenmarker.props; + pr.name = elem.value; + let newmk = mk.toGeoJSON(); + newmk.properties.name = elem.value; + alert(newmk.properties.name); + gjl.addData(newmk); + mk.remove(); // 古いマーカを消して入れ直す + modifyFlag(true); + } + } + function rmMarker(e) { + var elem = e.target; + if (popupopenmarker) { + var mk = popupopenmarker.marker; + //alert(mk); + mk.removeFrom(gjl); + mk.closePopup(); + mk.remove(); + modifyFlag(true); + } + } + // geojson外部ファイルの読み込みは次の行 + gjl = omnivore.geojson("./gj/yuzasprings.geojson", null, customLayer); + // ↑引数は順に: ファイル, 解析オプション, カスタムレイヤ + mapControl.addOverlay(gjl, "遊佐湧水ポイント"); + update.addEventListener('click', function() {updateGJ(gjl)}); + undobtn.addEventListener('click', function(e) {undoMarker(e)}); + rmbtn.addEventListener('click', rmMarker); + modifyFlag(false); + function dispGJ() { + var gj = gjl.toGeoJSON(); + var len = gj.features.length; + info.textContent = len + ':' + JSON.stringify(gj); + } + gjl.on("ready", function() { // 'ready' イベントに読み終わったときの処理 + jsonmap.fitBounds(gjl.getBounds()); // 読み取り失敗時は 'error' イベント + dispGJ(); + }); + gjl.addTo(jsonmap); // マップに足す + // L.control.layers(baseLayer, {"Triangle": gjl}).addTo(jsonmap); + jsonmap.on('contextmenu', function(e) { + var marker = L.marker(e.latlng,{ + draggable: true, + title: "Resouse location", + alt: "Resouce location", + riseOnHover: true + }).addTo(geomap).bindPopup(e.latlng.toString()).openPopup(); + + marker.on("dragged", function (ev){ + var cangedPos = ev.target.getLatlng(); + this.bindPopup(changedPos.toString()).openPopup(); + + }); + } + } + init("foo"); + } +}(); diff --git a/Auto_editsys/user/data/historymap.html b/Auto_editsys/user/data/historymap.html new file mode 100644 index 0000000..5d6cba6 --- /dev/null +++ b/Auto_editsys/user/data/historymap.html @@ -0,0 +1,48 @@ + + + +ヒストリーマップ + + + + + + + + + + + + + +

ヒストリーマップ

+
+
+ + +

+ + + +
+ +
+ +

+ +
+
+ +
+ + + + + diff --git a/Auto_editsys/user/data/how_to_use.html b/Auto_editsys/user/data/how_to_use.html new file mode 100644 index 0000000..fca403d --- /dev/null +++ b/Auto_editsys/user/data/how_to_use.html @@ -0,0 +1,80 @@ + + + + + + + + +丸池マッピング + + + + + + +

+

How to use

+ +

1. 撮影した場所をタップ

+

+まずマップ上で撮影地点をタップし、位置情報を取得します。
+タップするとマーカーが表示されますが、最後にタップしたマーカーが撮影地点 +として登録されます。
+写真の撮影方法 --> +

+ + +

2. 画像を添付

+

+次に画像を添付します。
+画像は一枚ずつ登録してください(複数を登録しないでね)。
+

+ +

3. コメント(概要)を記入

+

NAME の欄に自分の名前を記入してください。
+コメント欄に写真の概要、特徴を記入してください。
+

+ +

4. 送信

+

最後に送信ボタンを押して、上記の内容を登録してください。

+すると、下に入力した内容が表示されます。
+この調子でどんどん画像を入力していってください!
+アップロードした写真やコメントはあとで marker としてマップに表示するよ!
+じゃだめだよね...。 +

+

準備ができたら go hiromi

+ + diff --git a/Auto_editsys/user/data/img/marker.png b/Auto_editsys/user/data/img/marker.png new file mode 100644 index 0000000..bcaac69 --- /dev/null +++ b/Auto_editsys/user/data/img/marker.png Binary files differ diff --git a/Auto_editsys/user/data/kuso.rb b/Auto_editsys/user/data/kuso.rb new file mode 100755 index 0000000..22440f5 --- /dev/null +++ b/Auto_editsys/user/data/kuso.rb @@ -0,0 +1,141 @@ +#!/usr/bin/env ruby +# coding: utf-8 + +require "cgi" +require "pstore" + +c = CGI.new(:accept_charset => "UTF-8") + +mode = c["mode"] +name = c["name"] +cmt = c["comment"] +gpsza = c["gpsza"] +file = c["file"] +time = Time.now # Time.nowで現在時刻を取得 + +imgsrc = nil + +print "Content-type: text/html; charset=UTF-8\n\n" + +# HTMLヘッダの出力 +print " + + +CMDSmap + + + + + + + + + + + + +\n" + + +print "

丸池マップ in 遊佐

+
+
+ + +

+
+
+\n" + + +bbs = PStore.new("data2.db") +bbs.transaction do + if bbs["root"] == nil + bbs["root"] = Hash.new + end + data = bbs["root"] # csvに変更したほうがいい。 + + if name >"" && cmt > "" #&& filename > "" && #gpsza >"" + # 名前とコメント、両方値があるなら登録 + data[name] = [time, cmt] # 今日の日付とコメント + end + + # フォーム出力 + print"\n" + print"

GPS

+

+ + +

\n
" + + + print"
\n" + + print"

画像選択

\n" + print"
\n" + + print '

+NAME:
+コメント
+
+ +
+


' + + # if mode == "" + # filename = file.original_filename + + # if /\.JPG$/ =~ filename + # imgsrc = "#{file}.JPG" + # elsif /\.png$/ =~ filename + # imgsrc = "#{file}.png" + # end + + # if imgsrc + # open(imgsrc, "w") do |i| + # i.write cgi['file'].read + # end + # end + + # if /\.JPG$/ =~ filename + # system "mogrify -geometry 300x200 #{file}.JPG" + # elsif /\.png$/ =~ filename + # system "mogrify -geometry 300x200 #{file}.png" + # end + # else + # end + # end + + # 既存のコメント出力(キー毎) + print "
\n" # 定義環境開始 + for i in data.keys.sort{|x, y| + data[y][0] <=> data[x][0] # 日付の新しい順にソート + } + day = data[i][0] # 第0要素が日付 + msg = data[i][1] # 第1要素がコメント、それぞれ取り出す + #pic = data[i][2] + # latlng = data[i][3] + + printf("
%s\n", i) # キー(つまり飲んだものの名前) + printf("
記載日: %s
\n", day.strftime("%Y/%m/%d/ %X")) + printf(" %s\n", msg) + # printf(" %s\n", latlng) + # printf(" %s\n", pic) + # print ' + #

' + end + print "
\n" # 定義環境終了 +end# db.transaction 終わり + +# 画像、また画像の名称やコメント(以下、データ)をどのマップに加えるかの UI + + +print "
\n\n" diff --git a/Auto_editsys/user/data/storymap.html b/Auto_editsys/user/data/storymap.html new file mode 100644 index 0000000..a475c64 --- /dev/null +++ b/Auto_editsys/user/data/storymap.html @@ -0,0 +1,64 @@ + + + + + + + + +ストーリーマップ + + + + + + +

+

どのマップにデータを加えますか?


+ +ヒストリーマップ +伝統芸能マップ +安全マップ +食べ物マップ +除雪マップ +遊佐湧水マップ +


+ +

新しいマップを生成する

+

New map name :
+ +

+ + diff --git a/Auto_editsys/user/file.js b/Auto_editsys/user/file.js new file mode 100644 index 0000000..9cb82da --- /dev/null +++ b/Auto_editsys/user/file.js @@ -0,0 +1,24 @@ +/* +inputにファイルが選択された時にアップロードする。 +アップロードをクリックした時に動作させるためにはchangeをclickにする。 +$(document).onはあとから追加した要素にも対応させるため。 +*/ +$(document).on('change','input[name="hoge"]',function(){ + var fd = new FormData(); + if ($("input[name='hoge']").val()!== '') { + fd.append( "file", $("input[name='hoge']").prop("files")[0] ); + } + fd.append("dir",$("#hoge").val()); + var postData = { + type : "POST", + dataType : "text", + data : fd, + processData : false, + contentType : false + }; + $.ajax( + "ajax/index.php", postData + ).done(function( text ){ + console.log(text); + }); +}); diff --git a/Auto_editsys/user/geotag.js b/Auto_editsys/user/geotag.js new file mode 100644 index 0000000..2c2002d --- /dev/null +++ b/Auto_editsys/user/geotag.js @@ -0,0 +1,177 @@ + +// ajaxを使い、csvを読み込む +// $(document).ready(function() { +// $.ajax({ +// type: "GET", +// url: "./pstore/data.csv", +// dataType: "text", +// success: function(data){okiro(data)} +// }); +// }); + +function okiro(){ + // data = $.csv.toObjects(Text); + var timerInterval = 10000; // GPS失敗で何秒後に再取得か + var tmId = null; + var nn = 0, countD = document.getElementById("countdown"); + + // make a map////////////////////////////////////////////// + var osm = + L.tileLayer('//{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', { + attribution: + '© OpenStreetMap contributors', + maxZoom: 20, maxNativeZoom: 18 + }); + // var kokudo = + // L.tileLayer('//cyberjapandata.gsi.go.jp/xyz/std/{z}/{x}/{y}.png', { + // attribution: + // 'kokudo' + // }); + var geomap = L.map("mymap").setView([38.893, 139.8193], 16); + osm.addTo(geomap); + var baseLayers = {'OpenStreetMap': osm }; + L.control.layers(baseLayers).addTo(geomap); + //////////////////////////////////////////////////////////////// + + var point = L.marker(geomap.getCenter()).addTo(geomap); + var stop = document.getElementById("stp"); + var gps = document.getElementById("str"); + var ser = document.getElementById("serif"); + var tm = document.getElementById("time"); + var nowTrying = null; + + /* + var m1 = L.marker([39,140]).addTo(geomap) + */ + + function tryGetGPS() { + clearTimer(); + countD.textContent = "START!" + ser.textContent = "get GPS..." + nowTrying = navigator.geolocation.getCurrentPosition( + onSuccess, onError,{ + maximumAge: 0, timeout: 3000, enableHighAccuracy: true}) + } + + function onemore() { + if (nowTrying || tmId) { + info.textContent = "It already getting a GPS ...or 待機中です。"; + } else { + startTimer(); + } + } + function startTimer() { + if (tmId==null){ + tmId = setTimeout(tryGetGPS, 5000); + ser.textContent = "5秒後にGPS取得…"; + tm.textConent = "ok"; + } + } + function clearTimer() { + if (tmId) { + clearTimeout(tmId); + tmId = null; + } + } + + function countDown() { + tryGetGPS(); + } + + function stopCountDown() { + clearTimeout(); + countD.textContent = "stop"; + ser.innerHTML = "startボタンをもう一度押すと始まります"; + } + + function onSuccess(pos) { + nowTrying = null; + // var pulsingIcon = L.icon.pulse({iconSize:[20,20],color:'#1199fb'}); + var latlng = L.latLng([pos.coords.latitude, pos.coords.longitude]); + ser.textContent = "現在の位置は"+latlng+"です。"; + geomap.panTo(latlng); + // L.marker([lat, lng],{icon: pulsingIcon}).addTo(geomap); + point.setPopupContent("now").openPopup().setLatLng(latlng); + var lat = latlng.lat, lng = latlng.lng; + } + function onError(err) { // 失敗時 + nowTrying = null; + ser.textContent = "現在位置の取得失敗.10秒後にもう一回"; + tmId = setTimeout(tryGetGPS, timerInterval); + } + + + function onMapClick(e){ + var marker = L.marker(e.latlng,{ + draggable: true, + title: "Resouse location", + alt: "Resouce location", + riseOnHover: true + }).addTo(geomap).bindPopup(e.latlng.toString()).openPopup(); + + marker.on("dragged", function (ev){ + var cangedPos = ev.target.getLatlng(); + this.bindPopup(changedPos.toString()).openPopup(); + + }) + } + + geomap.on('click', onMapClick); + + + geomap.on("click", function(geotag) { + var form = document.forms.geotag; + var idokeido = document.getElementById("gps"); + geotagcopy = "exiftool -gpslatitude="+geotag.latlng.lat+" -gpslatitudeRef=N -gpslongitude="+geotag.latlng.lng+" -gpslongitudeRef=E"; + + form.lati.value = geotagcopy; + }); + /* + idokeido.textContent = geotagcopy; + */ + + geomap.on("click",function(geopop) { + var popup = L.popup(); + popup.setLatLng(geopop.latlng) + .setContent("" + geopop.latlng.toString()).openOn(geomap); + }); + + + // data_array= [0,0,0]; //create it before filling + // for (i = 0; i < data.length; i++) { + // //地図上に表示するデータの設定 + // data_array[i] = [parseFloat(data[i].latitude), parseFloat(data[i].longitude), parseFloat(data[i].mag)]; // if values are marked as string in the object else: + // // data_array[i] = [data[i].lat,data[i].lon,data[i].val]; + // var heat = L.marker([(data[i].latitude), (data[i].longitude)],{ + // //ポップアップの内容 + // }).bindPopup((data[i].mag)).addTo(geomap); + // }; + + var testlayer = new L.GeoJSON.AJAX("../test.geojson",{ + onEachFeature: function(j, layer) { + let p = j.properties; + if (p) { + let name = p.name, desc = p.description; + if (p.name) { + if (desc) { + // {{画像URL}} → に置換する + desc = desc.replace(/{{(.*)}}/, '') + } + let popup = "

" + name + "

" + "

" + desc + "

"; + layer.bindPopup(popup); + } + } + }}); + testlayer.addTo(geomap); + testlayer.on('data:loaded', function() { + jsonmap.fitBounds(testlayer.getBounds()); + // alert(JSON.stringify(testlayer.toGeoJSON())); + // testlayer.toGeoJSON() で元のGeoJSONが得られる + }); + + + + gps.addEventListener("click",countDown , false); + stop.addEventListener("click", stopCountDown, false); +}; +document.addEventListener("DOMContentLoaded", okiro, false); diff --git a/Auto_editsys/user/geotagmiru.rb b/Auto_editsys/user/geotagmiru.rb new file mode 100755 index 0000000..43dc174 --- /dev/null +++ b/Auto_editsys/user/geotagmiru.rb @@ -0,0 +1,147 @@ +#!/usr/bin/env ruby +# coding: utf-8 + +require 'cgi' +cgi = CGI.new(:accept_charset => "UTF-8") +param = cgi.params # CGI変数は配列となる + +mode = cgi['mode'] +tatesize = cgi['tatesize'] +yokosize = cgi['yokosize'] +gpsza = cgi['gpsza'] + + +maxsize = 2*1024**2 # 最大2MBまで受け付ける + +thiscgi = "./"+File.basename($0) # $0はこのスクリプトの起動名 +# File.basenameでディレクトリ名を除去してファイル名のみになる +imgsrc = nil # 画像保存時のファイル名 + + + + + +print <<__END__ + + +CMDSmap + + + + + + + +__END__ + +def error(message) + printf("

失敗

\n

%s

\n", message) +end + +printf(<<-EOF) +

写真埋め込み

+
+ +EOF +#

+ +if mode == "" + print <<__EOM__ + +

画像選択

+ +

位置

+

+ +

+

+ +#

リサイズ

+#

+# +#

+ +#

+# +#

+# +# +
+__EOM__ + # POSTされたら hiddenの変数 mode="decode" となる + +else + # POSTされたらこちらに来る + image = cgi["image"] + + filename = image.original_filename + ymd = Time.now.strftime("%Y年%m月%d日") + now = Time.now.strftime("%S") + + if /\.JPG$/ =~ filename # jpgとpngのみ処理 + imgsrc = "tmp/image#{now}.JPG" + elsif /\.png$/ =~ filename + imgsrc = "tmp/image#{now}.png" + end + + # たくさんファイルが書かれると溢れるので最大60*2ファイルに制限 + # かつ、3分以上経過したファイルは次のコマンドで消す + #### system "zsh -c '/bin/rm -f tmp/dummy tmp/*.*g(Nmm+3)'" + + + if image.size > maxsize + error("サイズが大きすぎます。(#{(maxsize/1024**2).to_s}メガバイト以内)") + + elsif imgsrc + open(imgsrc, "w") do |i| + i.write cgi['image'].read + end + message = CGI.escapeHTML(cgi["msg"].read) + gpszahyo = CGI.escapeHTML(cgi["lati"].read) + # tate = CGI.escapeHTML(cgi["tate"].read) + # yoko = CGI.escapeHTML(cgi["yoko"].read) + + print <<__EOM__ +

#{ymd}にポストされた画像

+#

縦#{tate}

+#

横#{yoko}

+

#{gpszahyo}

+ +

+

#{message}

+system "#{gpszahyo} tmp/image#{now}.JPG" + +__EOM__ + + if /\.JPG$/ =~ filename + # system "mogrify -geometry #{tate}x#{yoko} tmp/image#{now}.JPG" + system "#{gpszahyo} tmp/image#{now}.JPG" + #system "/usr/koeki/bin/Perl5.10/#{gpszahyo} tmp/image#{now}.JPG" + #system "#{message} tmp/image#{now}.JPG" + # elsif /\.png$/ =~ filename + # system "mogrify -geometry #{tate}x#{yoko} tmp/image#{now}.png" + # system "#{gpszahyo} tmp/image#{now}.png" + # #system "#{message} tmp/image#{now}.png" + + end + # 画像ファイルは作ったらすぐ消してしまう。 + # fork { + # fork { + # STDOUT.close + # STDERR.close + # sleep 3 + # File.unlink(imgsrc) + # } + # } + # Process.wait + else + error("JPGかpngファイルのみ受け付けます") + end +end + +puts " +" diff --git a/Auto_editsys/user/geotagsansyo1.rb b/Auto_editsys/user/geotagsansyo1.rb new file mode 100755 index 0000000..ecd249e --- /dev/null +++ b/Auto_editsys/user/geotagsansyo1.rb @@ -0,0 +1,160 @@ +#!/usr/bin/env ruby +# coding: utf-8 + +require 'cgi' +cgi = CGI.new(:accept_charset => "UTF-8") +param = cgi.params # CGI変数は配列となる + +mode = cgi['mode'] +tatesize = cgi['tatesize'] +yokosize = cgi['yokosize'] +gpsza = cgi['gpsza'] + + +maxsize = 2*1024**2 # 最大2MBまで受け付ける + +thiscgi = "./"+File.basename($0) # $0はこのスクリプトの起動名 +# File.basenameでディレクトリ名を除去してファイル名のみになる +imgsrc = nil # 画像保存時のファイル名 + +print <<__END__ + + + +位置情報埋め込み + + + + + + + +__END__ + +def error(message) + printf("

失敗

\n

%s

\n", message) +end + +printf(<<-EOF) +

位置情報埋め込みシステム

+
+ + + + +EOF +#

+ +if mode == "" + print <<__EOM__ + +
+ +

画像選択

+ + +

座標

+

+ +

+

+ + +

リサイズ

+ +

+ +

+ +

+ +

+ + +
+ +__EOM__ + # POSTされたら hiddenの変数 mode="decode" となる + +#

コメント(必要かな)

+#

+#

+# +# +#

+ + +else + # POSTされたらこちらに来る + image = cgi["image"] + + + filename = image.original_filename + ymd = Time.now.strftime("%Y年%m月%d日") + now = Time.now.strftime("%S") # 秒(2桁) + if /\.JPG$/ =~ filename # jpgとpngのみ処理 + imgsrc = "tmp/image#{now}.JPG" + elsif /\.png$/ =~ filename + imgsrc = "tmp/image#{now}.png" + end + # たくさんファイルが書かれると溢れるので最大60*2ファイルに制限 + # かつ、3分以上経過したファイルは次のコマンドで消す + #### system "zsh -c '/bin/rm -f tmp/dummy tmp/*.*g(Nmm+3)'" + if image.size > maxsize + error("ふぁいるでかすぎ(#{(maxsize/1024**2).to_s}メガバイト以内)") + elsif imgsrc + open(imgsrc, "w") do |i| + i.write cgi['image'].read + end + message = CGI.escapeHTML(cgi["msg"].read) + gpszahyo = CGI.escapeHTML(cgi["lati"].read) + tate = CGI.escapeHTML(cgi["tate"].read) + yoko = CGI.escapeHTML(cgi["yoko"].read) + + print <<__EOM__ +

#{ymd}にポストされた画像

+

縦#{tate}

+

横#{yoko}

+

#{gpszahyo}

+ + +

+

#{message}

+system "#{gpszahyo} tmp/image#{now}.JPG" + +__EOM__ + + if /\.JPG$/ =~ filename + system "mogrify -geometry #{tate}x#{yoko} tmp/image#{now}.JPG" + system "#{gpszahyo} tmp/image#{now}.JPG" + #system "/usr/koeki/bin/Perl5.10/#{gpszahyo} tmp/image#{now}.JPG" + #system "#{message} tmp/image#{now}.JPG" + elsif /\.png$/ =~ filename + system "mogrify -geometry #{tate}x#{yoko} tmp/image#{now}.png" + system "#{gpszahyo} tmp/image#{now}.png" + #system "#{message} tmp/image#{now}.png" + + + end + # 画像ファイルは作ったらすぐ消してしまう。 + # fork { + # fork { + # STDOUT.close + # STDERR.close + # sleep 3 + # File.unlink(imgsrc) + # } + # } + # Process.wait + else + error("JPGかpngファイルのみ受け付けます") + end +end + +puts " +" diff --git a/Auto_editsys/user/index.php b/Auto_editsys/user/index.php new file mode 100644 index 0000000..80309c2 --- /dev/null +++ b/Auto_editsys/user/index.php @@ -0,0 +1,15 @@ +$dir = $_POST["dir"]; +if($_FILES["file"]["tem_name"]){ + list($file_name,$file_type) = explode(".",$_FILES['file']['name']); + //ファイル名を日付と時刻にしている。 + $name = date("YmdHis").".".$file_type; + $file = "img/".$dir; + //ディレクトリを作成してその中にアップロードしている。 + if(!file_exists($file)){ + mkdir($file,0755); + } + if (move_uploaded_file($_FILES['file']['tmp_name'], $file."/".$name)) { + chmod($file."/".$name, 0644); + var_dump($dir."/".$name); + } +} diff --git a/Auto_editsys/user/kuso.html b/Auto_editsys/user/kuso.html new file mode 100644 index 0000000..cfa0a3a --- /dev/null +++ b/Auto_editsys/user/kuso.html @@ -0,0 +1,73 @@ + + + +CMDSmap + + + + + + + + + + + + + + +

丸池マップ in 遊佐

+
+
+ + +

+
+
+ + + + + + + + + +
+

画像選択

+ +

GPS

+

+ + +

+ + + +アップロードしたいファイル :
+コメント :
+ +
+ + + + + + + + + + + + + + + + + diff --git a/Auto_editsys/user/pstore/comment.rb b/Auto_editsys/user/pstore/comment.rb new file mode 100755 index 0000000..6cd5551 --- /dev/null +++ b/Auto_editsys/user/pstore/comment.rb @@ -0,0 +1,58 @@ +#!/usr/bin/env ruby +# coding: utf-8 + +require "cgi" +require "pstore" + +c = CGI.new(:accept_charset => "UTF-8") +name = c["name"] +cmt = c["comment"] +time = Time.now # Time.nowで現在時刻を取得 + +# HTMLヘッダの出力 +print "Content-type: text/html; charset=UTF-8\n\n" + +print"ひとこと掲示板\n" + +print"

ひとこと掲示板

\n" + +bbs = PStore.new("data.db") +bbs.transaction do + if bbs["root"] == nil + bbs["root"] = Hash.new + end + data = bbs["root"] # ここまではおきまり + + if name >"" && cmt > "" # 名前とコメント、両方値があるなら登録 + data[name] = [time, cmt] # 今日の日付とコメント + + end + + # フォーム出力 + print"
\n" + print '

+ +名前:
+コメント
+
+ +
+


' + + # 既存のコメント出力(キー毎) + print "
\n" # 定義環境開始 + for i in data.keys.sort{|x, y| + data[y][0] <=> data[x][0] # 日付の新しい順にソート + } + day = data[i][0] # 第0要素が日付 + msg = data[i][1] # 第1要素がコメント、それぞれ取り出す + printf("
%s\n", i) # キー(つまり飲んだものの名前) + printf("
記載日: %s
\n", day.strftime("%Y/%m/%d/ %X")) + printf(" %s\n", msg) + end + print "
\n" # 定義環境終了 +end# db.transaction 終わり + +print "
\n" diff --git a/Auto_editsys/user/pstore/data.csv b/Auto_editsys/user/pstore/data.csv new file mode 100644 index 0000000..a4edb48 --- /dev/null +++ b/Auto_editsys/user/pstore/data.csv @@ -0,0 +1,3 @@ +id,title,address,latlon +1,テスト1,テストだよーん,38.89421 139.81876 +2,テスト2,てすとだべ,38.89219 139.8234 diff --git a/Auto_editsys/user/pstore/data.db b/Auto_editsys/user/pstore/data.db new file mode 100644 index 0000000..c28cde6 --- /dev/null +++ b/Auto_editsys/user/pstore/data.db Binary files differ diff --git a/Auto_editsys/user/test.geojson b/Auto_editsys/user/test.geojson new file mode 100644 index 0000000..dddbd9b --- /dev/null +++ b/Auto_editsys/user/test.geojson @@ -0,0 +1,19 @@ +{ + "type": "FeatureCollection", + "features": [ + { + "type": "Feature", + "properties": { + "name": "公益大", + "description": "街灯がなく夜は暗い。{{../../../data/picture/IMGP0206.JPG}}" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 139.81895, + 38.89322 + ] + } + } + ] +} diff --git a/Auto_editsys/user/upload.rb b/Auto_editsys/user/upload.rb new file mode 100755 index 0000000..a1d3724 --- /dev/null +++ b/Auto_editsys/user/upload.rb @@ -0,0 +1,44 @@ +#!/usr/koeki/bin/ruby + +require "cgi" + +cgi2 = CGI.new() + +# id = cgi2.params["id"][0].read +file = cgi2.params["file"][0] + +if file.size < 1 then + msg = "ファイルを選択して下さい。" +else + file_name = file.original_filename.split(/(\\|\/)/)[-1] + open(Dir.getwd + "/file/#{id}.JPG", "w") {|fh| + fh.binmode + fh.write file.read + } + msg = "アップロードしました。" +end + + +# file = cgi2.params["file"][0] +# comment = cgi2.params["comment"][0].read + +# file_name = file.original_filename.split(/(\\|\/)/)[-1] +# open(Dir.getwd + "/file/#{}", "w") {|fh| +# fh.binmode +# fh.write file.read +# } + +print cgi2.header() + +print < + + + CMDSmap + + + #{msg} + + + +EOF diff --git a/Auto_editsys/user/upload2.rb b/Auto_editsys/user/upload2.rb new file mode 100755 index 0000000..808e463 --- /dev/null +++ b/Auto_editsys/user/upload2.rb @@ -0,0 +1,20 @@ +#!/usr/local/bin/ruby +require "cgi" + +cgi = CGI.new +print cgi.header("type" => "text/html", "charset" => "UTF-8") + +# ファイル名取得 + +if cgi['file'].original_filename =~ /\\([^\\]*)$/ + # Windows + IE の場合、ローカルのフルパスで渡されやがるんで... + filename = $1 +else + # それ以外はたぶんこれでいいはず + filename = File.basename(cgi['file'].original_filename) +end + +open("#{filename}","w") do |fh| + fh.binmode + fh.write cgi['file'].read +end diff --git a/README.md b/README.md index 9d55f82..9949654 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,7 @@ * [丸池システム](../../pages/otanisys/maruike.html) * [dbシステム](../../pages/viewerdb/viewerdb.rb) * [ストーリーマップ](../../pages/storymap/map.html) +* [mapデータを付加](../../pages/Auto_editsys/user/data/storymap.html) ### データ置き場 * original_pic diff --git a/data/picture/IMGP0206.JPG b/data/picture/IMGP0206.JPG index 6d39823..8f231a8 100644 --- a/data/picture/IMGP0206.JPG +++ b/data/picture/IMGP0206.JPG Binary files differ diff --git a/data/picture/IMGP0526.JPG b/data/picture/IMGP0526.JPG index 454d9da..179087b 100644 --- a/data/picture/IMGP0526.JPG +++ b/data/picture/IMGP0526.JPG Binary files differ