れレノグラヌドの描き方

ITO WorldのビデオロシアOpenStreetMap 2007-2012の線集を芋た埌、私は自分のものを䜜りたかった-れレノグラヌドでのみ。 詳现や小さな倉曎を明確に芋るため。



実装には2週間以䞊かかりたした。

この蚘事では、これがどのように行われたかを説明したす。

ビデオ自䜓はカットの䞋にありたす。









1080pの党画面衚瀺ず音声付きで芋やすく



このようなビデオの䜜成は、2぀の䞻芁な郚分に分かれおいたす。

  1. 必芁なデヌタを取埗したす。
  2. このデヌタからビデオを収集する


必芁なデヌタを取埗したす。

履歎デヌタの取埗は、OpenStreetMapアヌキテクチャによっおやや耇雑です。このアヌキテクチャは、珟圚のマップをすばやく衚瀺しお線集するように蚭蚈されおいたすが、履歎をアンロヌドするためではありたせん。 さらに、 ラむセンスをCC-BY-SAからODbLに倉曎するず、タスクが耇雑になり、デヌタベヌスから䞀郚のオブゞェクトが削陀され、他の䞀郚の倉曎の履歎が生じたす。 れレノグラヌドは、ラむセンスを倉曎する際に倚くの苊劎をしたした。718には、ビデオにはっきりず衚瀺されおいたす。

䞀般に、特定の゚リアのすべおのオブゞェクトの履歎党䜓を䟿利にダりンロヌドするサヌビスはただありたせん。



必芁なもの

もちろん、たず、ダりンロヌドするものを決定する必芁がありたす。

行政境界線のれレノグラヌドは、ほが正方圢の枠にかなり収たりたす。 ただし、スケヌルを回したり、歪めたり、倧きく歪めたりせずに、最も近い呚囲メンデレヌ゚ボ、チャシュニコノォ、ゎルボむ゚、フィルサノフカ、ピャトニツコ゚ショッセなどを捉えるこずは䞍可胜です。 Firsanovskoe高速道路のみを远加するこずが決定されたした。

フルHD 1920x1080はやや䞍均衡であるこずが刀明したした-䞭倮のれレノグラヌド、右䞋隅の䞍完党なFirsanovkaずSkhodnya、および残りの空の隅。 1080行の垂盎解像床を維持しながら、最小フレヌムは1220x1080でした。 ビデオ解像床スキヌムの瞑想の埌、1440x1080に拡匵するこずが決定されたした。

デヌタをダりンロヌドするために、bbox 55.92-56.05.37.08-37.31が取埗されたした-フレヌムの端を越えお䌞びるラむンのマヌゞンがありたす。



デヌタ゜ヌス

䞻な情報源には次のようなものがありたす執筆時点。

  1. ODbLデヌタのみを生成するメむンデヌタベヌスは、地域ごず、オブゞェクトごず、たたはチェンゞセットごずの履歎です。
  2. 10月19日の最埌の完党な履歎ダンプ党惑星ファむル 。bz2アヌカむブで37 GB、ODbLデヌタのみ。 ぀たり 1か月半前に300〜500 GBが解凍され、党䜓ではありたせん。
  3. bz2アヌカむブで35 GBの6月1日のSS-BY-SAの最埌の完党な履歎ダンプ 。 これは、ボットがODbLず互換性のないデヌタを「切り取る」1.5か月前で、ラむセンスが倉曎される4.5か月前です。
  4. 毎日 、毎時、および毎分の差分-ODbLの珟圚のベヌス、CC-BY-SA時代 、および移行期間の䞡方。
  5. さたざたなアンロヌドフルストヌリヌ 。
  6. 残念ながらgis-labでのロシアの毎日の差分には省略が含たれおいたすが、 惑星のものには含たれおいたせんが、それらのすべおには倉曎されたオブゞェクトの最終バヌゞョンのみが含たれおいたす。 1日あたり1フレヌム以䞊のビデオにはあたり適しおいたせん。


実隓により、完党な履歎ダンプから必芁なデヌタを切り出すには、かなりのリ゜ヌスが必芁であるこずが瀺されおいたす。 たずえば、 history-excerpt.plスクリプトは、6 GBであっおもRAMの䞍足を蚎えおいたした。



その結果、混合オプションが遞択されたした。

  1. 2012.04.01たでの話は、サむモンプヌルからロシアを降ろしたrussia.osh.bz2-1 GB から取られたもので、17 GBしか解凍されおいたせん。
  2. 2012.04.01から2012.08.31たでのストヌリヌは、移行期間の毎日の差分から取られおいたす。 差分はCC-BY-SA時代に完党にはドッキングされおいたせん4月1〜4日の䞀郚の線集は、1時間ず1分間の差分でのみ䜿甚できたすが、Zelenogradの線集はすべお毎日のレンタルです。 ただし、65 GBは解凍されおいたす。
  3. 2012.09.01のストヌリヌは、Zelenogradのすべおのチェンゞセットをポンプでくみ出すこずにより、メむンベヌスから取埗されたした。 倉曎セットのリストは、openstreetmap.orgから長方圢の領域の倉曎履歎の数癟ペヌゞをダりンロヌドするこずによっお取埗されたした。 この゜ヌスは倚くの远加デヌタを生成したすたずえば、 アラスカはむンポヌトをキャッチし 、ダりンロヌドしたせんでしたが、短期間でデヌタボリュヌムは小さく、わずか90 MBです。


目的のフラグメントを切り取りたす

珟圚のアヌキテクチャによるず、OSMには、ノヌド、りェむ、リレヌションの3皮類の゚ンティティがありたす。 ただし、ノヌドポむントに座暙がある堎合、りェむラむンは単なるノヌドのリストであり、独自の座暙はありたせん。 特定の領域にデヌタをアップロヌドするには、必芁なノヌドを遞択するのは簡単ですが、必芁な方法を遞択するには、䜿甚するすべおのノヌドを確認する必芁がありたす。 ぀たり ノヌドのたばらなリストを䜜成する必芁がありたす識別子はほが20億に達しおいたす。これにより、ノヌド䞊の方法をすばやく確認できたす。

リレヌションは、オブゞェクトをグルヌプ化し、耇雑な構造を描画するために䜿甚され、ノヌド、りェむ、その他のリレヌションで構成できたす。これには、あらゆるレベルのネストずルヌプを圢成できるリレヌションが含たれたす。 このビデオでは、远加のゞオメトリを提䟛しないため、ダりンロヌドたたは衚瀺しないこずが決定されたしたビデオで䜿甚されおいないペむンティング領域の順序に圱響を䞎える可胜性がありたす。



いく぀かの実隓の埌、次の順序が遞択されたした。

  1. ノヌドリストは、正芏衚珟であるegrepナヌティリティを䜿甚しおコンパむルされたした

    すべおのデヌタファむルに保存せずにアヌカむブからアヌカむブに送信されたデヌタを含むを非垞に迅速に匕き出したした。

    さらに、ノヌドIDegrep、sort、uniqの2぀のみがリストから取り出され、ファむルに保存されたした。 合蚈で玄30分かかりたした。
  2. 特別に䜜成されたプログラムが1行ず぀XML解析なしファむルをスキャンし、怜出されたノヌドのすべおのバヌゞョンに関する情報ず、遞択されたノヌドの少なくずも1぀を䜿甚したすべおの情報を匕き出したした。 オブゞェクトの可芖属性を指定しない毎日の差分の堎合、この属性は倖郚タグ<delete>などに基づいお远加されたした。 ノヌドのリスト合蚈で玄17䞇の怜玢は、16ビットむンデックスノヌドIDの32ビット衚珟からの最高16ビットによっお加速されたした。 その堎で補充されるりェむリストでは、むンデックスは䜿甚されたせんでした。 私はたった2侇6000しか蓄積しおおらず、怜蚌はそれほど頻繁に必芁ありたせん。 箄7時間かかりたしたが、そのうち5時間-1日の差分が150でした。




結果の正確性を確認したした

  1. バヌゞョンの連続的な増加を確認するず、ギャップがないこずがわかりたした。 2008幎にTorzhokからZelenogradに移行したway 8038408の最新バヌゞョンは手動で削陀されたしたが、珟圚はTorzhokのみが存圚し、 誀っおopenstreetmap.orgから受信した倉曎のリストに含たれおいたす
  2. 必芁な日の荷降ろしのセクションは、2009幎から 2012幎に保存した郜垂の荷降ろし、および2012幎のgis-labからのモスクワ地域の遞択的な荷降ろしず䞀臎したした。


ただし、フレヌムをレンダリングするずきに、2008幎から2010幎にYahoo衛星画像の境界を蚭定する23273948が 、2009幎4月たで1぀のドットだけでbboxに入り、誀っお描画されるこずがわかりたした。 この方法の远加ノヌドは、手動でアンロヌドに远加されたした。



最終アップロヌドrarで6.3 MBをダりンロヌドできたす 。

これは、2぀のラむセンスに基づくデヌタアセンブリであるこずを忘れないでください。2012-09-12T10たでのすべおのCC-BY-SA 2.00000ZおよびODbL 1.0以降。



ビデオを䜜成する

デヌタを受け取ったら、描画を開始できたす。

ただし、最初にビデオの速床を決定する必芁がありたす。

速床を䞀定にするずいう最初のアむデアは、最初の線集のリストを芋たずきにばらばらになりたした。

  1. 2005-11-10T1735
  2. 2007-04-02T1230
  3. 2007-09-29T1129
぀たり 合蚈7幎の間隔で、最初のほが2幎は-2回の線集のみですその埌、タむトになりたす。 これらの線集の間のボむドにより、「スクワダヌ」加速が決定されたした。

1日に1フレヌムの合蚈速床が高すぎるように思えたした。 5幎間の倚かれ少なかれアクティブな線集-1830フレヌム、1分匷。

1時間に1フレヌムで30分のビデオが埗られたすが、これは倚すぎたす。

オプション1フレヌムで4時間で停止したした぀たり、珟実ず比范しおx360000。

最初のスクロヌルを考慮するず、11,800フレヌムが7:52になりたした。



時間枠

フレヌムを描画するには、すべおのオブゞェクトのすべおのバヌゞョンをクむックアクセスで保持するか、時間の経過ずずもに順次倉曎を「適甚」しお、適切なタむミングでフレヌムを描画する必芁がありたす。 圌は2番目のオプションで停止したした。

Simon Pooleからのアンロヌドは「すべおのノヌド-すべおの方法-すべおの関係」で構成されおいるため、時間の経過ずずもに䜕らかの方法で゜ヌトする必芁がありたした。 単玔なプログラムここでも、XML解析なしの行ごずで、アップロヌドはクロノフレヌムに分割されたした。4時間ごずの倉曎は、フレヌム時間にちなんで呜名された別のファむルに蚘録されたした。 箄10分かかりたした。

これで、タむムフレヌムを順番に読み蟌み、それぞれが画像を描画した埌に読み蟌むだけで十分です。



少し䞊にレむアりトされたアップロヌドは、実際にはすべおの時間枠の順次ドッキングです。 最初のものは構造䞊で䞍均䞀でした。



SVGでのレンダリング

独自のラスタヌレンダラヌを発明しないために、ベクタヌSVGを䜜成し、既補のプログラムによっおラスタヌに倉換するこずにしたした。 SVGはxml-textであるずいう点で䟿利ですが、半透明などのあらゆる皮類の䟿利なものをサポヌトしおいたす。

SVGを䜜成するには、XML解析を䜿甚したプログラムを再床䜜成する必芁がありたした。 ただし、デヌタ量は十分に受け入れられるようになりたした。

レンダリングには1時間15分かかりたした。 SVGの合蚈ボリュヌムは15 GBです。



20120720080000.svg-ボットが到着する前の最埌のフレヌム





20120721000000.svg-非ODlデヌタを切り捚おる遠慮





プログラムによっおはSVGの解釈が異なる堎合があり、このために準備する必芁があるこずに泚意しおください。 生成されたファむルを芋おいたChromiumは、ImageMagickが埌でしたのずは異なる画像を衚瀺するこずがありたした。 SVGの圢成は数回調敎する必芁がありたした。



ラスタヌに倉換

圓初、ラスタヌスキヌムに最適な圢匏ずしお、SVGをPNGに倉換する予定でした。 しかし、ImageMagickによっお䜜成されたPNGで友人をavidemuxにするこずはできたせんでした。avidemuxは頑固に緑色のフレヌム党䜓であふれおいたした。

その結果、BMPぞの倉換が行われたした。

ImageMagickの倉換ナヌティリティは、単䞀タむプのトゥルヌカラヌスむッチで動䜜したした

このプロセスには6時間かかりたした。 BMPの合蚈ボリュヌムは53 GBです。



ビデオアセンブリ

ビデオは、 avidemuxによっおBMPファむルのパックから収集されたした 。

Xvidコヌデックは、GNUベヌスの定評のあるものずしお遞ばれたした。 暙準蚭定に関しおは、量子化噚のみが2で再配眮されたした。

組み立おには玄25分かかりたした。



CC-BY-SA 3.0のラむセンスの䞋でファむルずしおアップロヌドされた音楜なしのビデオ137 MB

䞊蚘の2぀のSVGフレヌムもこのラむセンスに基づいおいたす。



音楜オヌバヌレむ

私のコレクションの音楜はCCラむセンスず互換性がないため、YouTubeの音楜オプションが䜜成されたした。

ほが8分間を埋めるために、組成物から最も壮倧な断片が取り出されたした。

  1. ノァンゲリス-声玄1:00から6:50
  2. 債刞-゚リュシりム玄0:30〜2:30


Adobe Auditionでミックスされ、 VirtualDubのビデオに貌り付けられた音楜

䞀郚のむベントの音楜ぞのバむンドは行われず、すべおの偶然はランダムです。



結果



ビデオに衚瀺されるもの



謝蟞



受け入れられたオファヌ




All Articles