5.5MBの経度緯度データを含むJavaScriptオブジェクトファイルがあり、Perlで開きたいので、大まかな詳細削減アルゴリズムを適用して、削減されたデータセットで新しいオブジェクトファイルを保存できます。詳細を減らすために、20番目のlong/latペアごとにのみ取るforループを使用します。
これはjavascriptで実行できますが、これには、各座標セットをコピーして貼り付け、JavasSriptを一度に1つずつ実行する必要があります。
次に、座標の各セットを取得してSQLデータベースに入れることができると思いましたが、それは大雑把な方法のようです。そして、多くのデータを移動します。
私は、すべてをサーバー上で実行するために、Perlがより優れたオプションの1つであることに決めました。
次のコマンドでファイルを開くことができます。
#!/usr/bin/perl
# open file
open(FILE, "reduced_object_latlng.js") or die("Unable to open file");
# read file into an array
@data = <FILE>;
# close file
close(FILE);
# print file contents
foreach $line (@data)
{
print $line;
}
オブジェクトは次の設計に従います。
var paths = {
mayo: {
name: 'Mayo',
colour: 'green',
coordinates: '-9.854892,53.76898 -9.853634,53.769338 -9.85282,53.769387 -9.851981,53.769561 -9.850952,53.769508 -9.850129,53.769371 -9.849136,53.769171 **data**'
},
galway: {
name: 'Galway',
colour: 'purple',
coordinates: '**data**;
}
}; //etc.
上記のデータをどのように減らすかを説明するために、JavaScriptバージョンが1つのファイルからロードしますvar coords = "*data*"
coords = coords.split(" ");
var path = [];
var output="";
document.getElementById("map_canvas").innerHTML = "";
for (var i = 0; i < coords.length; i++) {
if (i%20==0)
{
var coord = coords[i].split(",");
output += coord[0]+","+coord[1]+" ";
}
}
document.getElementById("map_canvas").innerHTML = output;
JSONに変換することを提案しているものをいくつか読んだことがありますが、それを行う必要があるかどうかはわかりません。そして、純粋なテキストハンドラーを作成する代わりに、ファイルをオブジェクトとしてロードする方法はありますか?
私は時間のために立ち往生していたので、私はこのようにそれをしました:
var outputobject = 'var paths = {';
for (property in copypaths) {
outputobject += property + ': { ';
outputobject += "name: '" + copypaths[property].name+"',";
outputobject += "colour: '"+ copypaths[property].colour+"',";
var reducedoutput="";
var coord = copypaths[property].coordinates.split(" ");
for (var i = 0; i < coord.length; i++) {
if (i%20==0)
{
var coords = coord[i].split(",");
reducedoutput += coords[0]+","+coords[1]+" ";
}
}
outputobject += "coordinates: '"+ reducedoutput+"'},";
}
outputobject += "};";
document.getElementById("reduced").innerHTML = outputobject;
それでも、最後のをコピー/貼り付けして削除する必要があります,
。@Oleg V. Volkovに感謝します。週の後半にもっと時間があれば、あなたがレイアウトした方法を見ていきます。