上記の記事では続き番号を途中から始める方法として、ダミーのピンを立てる方法を紹介しています。
一方で途中から始めたい数字が小さいうちは良いですが、例えば100から続き番号を始めたい場合に99個も手動でダミーを立てるのはほぼ無理ですよね。
実は先日に大きい続き番号でマイマップを始めたいことが個人的にありましたので、その際にダミーを含んだGoogleマイマップでインポート可能なCSVを出力できるPythonコードを作成しました。
同じ悩みを持っている方のために以下にそのPythonコードを公開します。
続き番号を途中から始めたいときのダミーを含んだCSVを出力するPythonコード
Googleマイマップにおいて、続き番号を途中から始めたいときのダミーを含んだCSVを出力するPythonコードは以下です。import datetime
MAX_NUMBER = 100
DUMMY_XPOS = 138.73008957811186
DUMMY_YPOS = 35.359562096616244
DUMMY_NAME_HEADER = "DUMMY_"
DUMMY_DESCRIPTION = "DUMMY_DESCRIPTION"
class DataClass:
def __init__(self, _number, _xpos, _ypos, _name, _description):
self.number = _number
self.xpos = _xpos
self.ypos = _ypos
self.name = _name
self.description = _description
def generateLine(data):
return '"POINT (%f %f)",%s,%s' % (data.xpos, data.ypos, data.name, data.description)
datas = {
DataClass(50, 139.7656761808842, 35.67946952583413, "東京駅", ""),
DataClass(90, 139.7036817754375, 35.688998151804626, "新宿駅", ""),
}
print("\n"*10)
resultLines = "WKT,名前,説明\n"
for i in range(1, MAX_NUMBER+1):
for data in datas:
if i == data.number:
resultLines += generateLine(data)
break
else:
resultLines += generateLine(DataClass(i, DUMMY_XPOS, DUMMY_YPOS, DUMMY_NAME_HEADER + str(i), DUMMY_DESCRIPTION))
if i < MAX_NUMBER + 1:
resultLines += "\n"
print(resultLines)
DateTimeStr = datetime.datetime.now().strftime("%Y%m%d_%H%M%S")
with open(DateTimeStr + "_result.csv", "w", encoding="utf-8") as f:
f.write(resultLines)
コードは以上です。
使い方は次のセクションで紹介します。
使い方
さきほどのPythonコードの使い方を紹介します。データ点の最大数をセットする
コード中にあるMAX_NUMBERがデータ点の最大数になります。ダミーも含めて、表示したいデータ点に併せて数を変えましょう。
MAX_NUMBER = 100
データをセットする
コード中にDatasの箇所に表示したい(ダミーではない)ピンの情報を入力していきます。datas = {
DataClass(50, 139.7656761808842, 35.67946952583413, "東京駅", ""),
DataClass(90, 139.7036817754375, 35.688998151804626, "新宿駅", ""),
}
DataClassのコンストラクタの第1引数に続き番号、第2引数に経度、第3引数に緯度、第4引数に名前、第5引数に説明を入力します。
上記の例では、50番に東京駅を、90番に新宿駅を表示するデータをセットしています。
コードを実行する
あとはコードを実行すると、さきほどのピンとダミーを含んだCSVが出力されます。さきほどの例でコードを実行したときのCSVの結果は以下です。
WKT,名前,説明
"POINT (138.730090 35.359562)",DUMMY_1,DUMMY_DESCRIPTION
"POINT (138.730090 35.359562)",DUMMY_2,DUMMY_DESCRIPTION
"POINT (138.730090 35.359562)",DUMMY_3,DUMMY_DESCRIPTION
"POINT (138.730090 35.359562)",DUMMY_4,DUMMY_DESCRIPTION
"POINT (138.730090 35.359562)",DUMMY_5,DUMMY_DESCRIPTION
"POINT (138.730090 35.359562)",DUMMY_6,DUMMY_DESCRIPTION
"POINT (138.730090 35.359562)",DUMMY_7,DUMMY_DESCRIPTION
"POINT (138.730090 35.359562)",DUMMY_8,DUMMY_DESCRIPTION
"POINT (138.730090 35.359562)",DUMMY_9,DUMMY_DESCRIPTION
"POINT (138.730090 35.359562)",DUMMY_10,DUMMY_DESCRIPTION
"POINT (138.730090 35.359562)",DUMMY_11,DUMMY_DESCRIPTION
"POINT (138.730090 35.359562)",DUMMY_12,DUMMY_DESCRIPTION
"POINT (138.730090 35.359562)",DUMMY_13,DUMMY_DESCRIPTION
"POINT (138.730090 35.359562)",DUMMY_14,DUMMY_DESCRIPTION
"POINT (138.730090 35.359562)",DUMMY_15,DUMMY_DESCRIPTION
"POINT (138.730090 35.359562)",DUMMY_16,DUMMY_DESCRIPTION
"POINT (138.730090 35.359562)",DUMMY_17,DUMMY_DESCRIPTION
"POINT (138.730090 35.359562)",DUMMY_18,DUMMY_DESCRIPTION
"POINT (138.730090 35.359562)",DUMMY_19,DUMMY_DESCRIPTION
"POINT (138.730090 35.359562)",DUMMY_20,DUMMY_DESCRIPTION
"POINT (138.730090 35.359562)",DUMMY_21,DUMMY_DESCRIPTION
"POINT (138.730090 35.359562)",DUMMY_22,DUMMY_DESCRIPTION
"POINT (138.730090 35.359562)",DUMMY_23,DUMMY_DESCRIPTION
"POINT (138.730090 35.359562)",DUMMY_24,DUMMY_DESCRIPTION
"POINT (138.730090 35.359562)",DUMMY_25,DUMMY_DESCRIPTION
"POINT (138.730090 35.359562)",DUMMY_26,DUMMY_DESCRIPTION
"POINT (138.730090 35.359562)",DUMMY_27,DUMMY_DESCRIPTION
"POINT (138.730090 35.359562)",DUMMY_28,DUMMY_DESCRIPTION
"POINT (138.730090 35.359562)",DUMMY_29,DUMMY_DESCRIPTION
"POINT (138.730090 35.359562)",DUMMY_30,DUMMY_DESCRIPTION
"POINT (138.730090 35.359562)",DUMMY_31,DUMMY_DESCRIPTION
"POINT (138.730090 35.359562)",DUMMY_32,DUMMY_DESCRIPTION
"POINT (138.730090 35.359562)",DUMMY_33,DUMMY_DESCRIPTION
"POINT (138.730090 35.359562)",DUMMY_34,DUMMY_DESCRIPTION
"POINT (138.730090 35.359562)",DUMMY_35,DUMMY_DESCRIPTION
"POINT (138.730090 35.359562)",DUMMY_36,DUMMY_DESCRIPTION
"POINT (138.730090 35.359562)",DUMMY_37,DUMMY_DESCRIPTION
"POINT (138.730090 35.359562)",DUMMY_38,DUMMY_DESCRIPTION
"POINT (138.730090 35.359562)",DUMMY_39,DUMMY_DESCRIPTION
"POINT (138.730090 35.359562)",DUMMY_40,DUMMY_DESCRIPTION
"POINT (138.730090 35.359562)",DUMMY_41,DUMMY_DESCRIPTION
"POINT (138.730090 35.359562)",DUMMY_42,DUMMY_DESCRIPTION
"POINT (138.730090 35.359562)",DUMMY_43,DUMMY_DESCRIPTION
"POINT (138.730090 35.359562)",DUMMY_44,DUMMY_DESCRIPTION
"POINT (138.730090 35.359562)",DUMMY_45,DUMMY_DESCRIPTION
"POINT (138.730090 35.359562)",DUMMY_46,DUMMY_DESCRIPTION
"POINT (138.730090 35.359562)",DUMMY_47,DUMMY_DESCRIPTION
"POINT (138.730090 35.359562)",DUMMY_48,DUMMY_DESCRIPTION
"POINT (138.730090 35.359562)",DUMMY_49,DUMMY_DESCRIPTION
"POINT (139.765676 35.679470)",東京駅,
"POINT (138.730090 35.359562)",DUMMY_51,DUMMY_DESCRIPTION
"POINT (138.730090 35.359562)",DUMMY_52,DUMMY_DESCRIPTION
"POINT (138.730090 35.359562)",DUMMY_53,DUMMY_DESCRIPTION
"POINT (138.730090 35.359562)",DUMMY_54,DUMMY_DESCRIPTION
"POINT (138.730090 35.359562)",DUMMY_55,DUMMY_DESCRIPTION
"POINT (138.730090 35.359562)",DUMMY_56,DUMMY_DESCRIPTION
"POINT (138.730090 35.359562)",DUMMY_57,DUMMY_DESCRIPTION
"POINT (138.730090 35.359562)",DUMMY_58,DUMMY_DESCRIPTION
"POINT (138.730090 35.359562)",DUMMY_59,DUMMY_DESCRIPTION
"POINT (138.730090 35.359562)",DUMMY_60,DUMMY_DESCRIPTION
"POINT (138.730090 35.359562)",DUMMY_61,DUMMY_DESCRIPTION
"POINT (138.730090 35.359562)",DUMMY_62,DUMMY_DESCRIPTION
"POINT (138.730090 35.359562)",DUMMY_63,DUMMY_DESCRIPTION
"POINT (138.730090 35.359562)",DUMMY_64,DUMMY_DESCRIPTION
"POINT (138.730090 35.359562)",DUMMY_65,DUMMY_DESCRIPTION
"POINT (138.730090 35.359562)",DUMMY_66,DUMMY_DESCRIPTION
"POINT (138.730090 35.359562)",DUMMY_67,DUMMY_DESCRIPTION
"POINT (138.730090 35.359562)",DUMMY_68,DUMMY_DESCRIPTION
"POINT (138.730090 35.359562)",DUMMY_69,DUMMY_DESCRIPTION
"POINT (138.730090 35.359562)",DUMMY_70,DUMMY_DESCRIPTION
"POINT (138.730090 35.359562)",DUMMY_71,DUMMY_DESCRIPTION
"POINT (138.730090 35.359562)",DUMMY_72,DUMMY_DESCRIPTION
"POINT (138.730090 35.359562)",DUMMY_73,DUMMY_DESCRIPTION
"POINT (138.730090 35.359562)",DUMMY_74,DUMMY_DESCRIPTION
"POINT (138.730090 35.359562)",DUMMY_75,DUMMY_DESCRIPTION
"POINT (138.730090 35.359562)",DUMMY_76,DUMMY_DESCRIPTION
"POINT (138.730090 35.359562)",DUMMY_77,DUMMY_DESCRIPTION
"POINT (138.730090 35.359562)",DUMMY_78,DUMMY_DESCRIPTION
"POINT (138.730090 35.359562)",DUMMY_79,DUMMY_DESCRIPTION
"POINT (138.730090 35.359562)",DUMMY_80,DUMMY_DESCRIPTION
"POINT (138.730090 35.359562)",DUMMY_81,DUMMY_DESCRIPTION
"POINT (138.730090 35.359562)",DUMMY_82,DUMMY_DESCRIPTION
"POINT (138.730090 35.359562)",DUMMY_83,DUMMY_DESCRIPTION
"POINT (138.730090 35.359562)",DUMMY_84,DUMMY_DESCRIPTION
"POINT (138.730090 35.359562)",DUMMY_85,DUMMY_DESCRIPTION
"POINT (138.730090 35.359562)",DUMMY_86,DUMMY_DESCRIPTION
"POINT (138.730090 35.359562)",DUMMY_87,DUMMY_DESCRIPTION
"POINT (138.730090 35.359562)",DUMMY_88,DUMMY_DESCRIPTION
"POINT (138.730090 35.359562)",DUMMY_89,DUMMY_DESCRIPTION
"POINT (139.703682 35.688998)",新宿駅,
"POINT (138.730090 35.359562)",DUMMY_91,DUMMY_DESCRIPTION
"POINT (138.730090 35.359562)",DUMMY_92,DUMMY_DESCRIPTION
"POINT (138.730090 35.359562)",DUMMY_93,DUMMY_DESCRIPTION
"POINT (138.730090 35.359562)",DUMMY_94,DUMMY_DESCRIPTION
"POINT (138.730090 35.359562)",DUMMY_95,DUMMY_DESCRIPTION
"POINT (138.730090 35.359562)",DUMMY_96,DUMMY_DESCRIPTION
"POINT (138.730090 35.359562)",DUMMY_97,DUMMY_DESCRIPTION
"POINT (138.730090 35.359562)",DUMMY_98,DUMMY_DESCRIPTION
"POINT (138.730090 35.359562)",DUMMY_99,DUMMY_DESCRIPTION
"POINT (138.730090 35.359562)",DUMMY_100,DUMMY_DESCRIPTION
指定した東京駅と新宿駅以外のデータがダミーとなってきちんと出力されていますね。
Googleマイマップに読み込ませる
最後にこのCSVをGoogleマイマップに読み込ませれば完了です。CSVを読み込ませるには、新規のレイヤを追加し、「インポート」を選択します。
あとはさきほどのCSVを読み込ませると、上記の例ではダミーも含めて合計100個のピンが一斉にセットされます。
(参考) ダミーのピンを表示外にする
続き番号と途中から始めるにはダミーのピンを表示範囲の外にしてやる必要があります。その方法については以下の記事に詳しくまとめているので、そちらをご覧ください。
まとめ
この記事では、Googleマイマップにおいて、続き番号を途中から始めたいときのダミーを含んだCSVを出力するPythonコードを紹介しました。Googleマイマップにおいて、大きな続き番号から続き番号を始めたいときに活用してみてはいかがでしょうか?