• R/O
  • HTTP
  • SSH
  • HTTPS

Commit

Tags
No Tags

Frequently used words (click to add to your profile)

javac++androidlinuxc#windowsobjective-ccocoa誰得qtpythonphprubygameguibathyscaphec計画中(planning stage)翻訳omegatframeworktwitterdomtestvb.netdirectxゲームエンジンbtronarduinopreviewer

巨大森林を分割する


Commit MetaInfo

Revisão8c8412228ee842d8e00dc86f64f0f868a99a8121 (tree)
Hora2013-08-10 08:54:26
Autorhayashi.yuu <hayashi.yuu@gmai...>
Commiterhayashi.yuu

Mensagem de Log

ノードを持たないWAYをみつけたらWORRNINGにする

Mudança Sumário

Diff

--- a/src/osm/jp/RelationCutter.java
+++ b/src/osm/jp/RelationCutter.java
@@ -234,55 +234,63 @@ public class RelationCutter {
234234 if (DbBigrelation.getWay(con, way, member.ref)) {
235235 DbBigrelation.getTags(con, way.tags, way.idref);
236236 DbBigrelation.getOsmnodes(con, way.waynodes, way.idref);
237-
238- // 最後のWAYNODEが分割点かどうかを調べて、分割点どうしを連結する。
239- OsmNode lastnode = way.waynodes.get(way.waynodes.size() - 1); // 最終のノード
240-
241- if (isLatBoundary(lastnode.lat)) {
242- OsmNode maenode = way.waynodes.get(way.waynodes.size() - 2); // 一つ前のノード
243- double delta = lastnode.lat - maenode.lat;
244- if (delta == 0.0D) {
245- // 真東から? 単純結合
246- // 真西から? 単純結合
247-
248- /* [[PENDING]] */
249- /*
250- * とりあえず、あとまわし
251- */
252- }
253- else if (delta > 0.0D) {
254- if (arrow) {
255- // 南から 右回りなら、東へ
256- processEast(con, way);
237+ if (way.waynodes.size() < 1) {
238+ Logger.logger.warning("ノードを持たないWAYです。(way:id="+ way.idref +")");
239+ }
240+ else {
241+ // 最後のWAYNODEが分割点かどうかを調べて、分割点どうしを連結する。
242+ OsmNode lastnode = way.waynodes.get(way.waynodes.size() - 1); // 最終のノード
243+
244+ if (isLatBoundary(lastnode.lat)) {
245+ OsmNode maenode = way.waynodes.get(way.waynodes.size() - 2); // 一つ前のノード
246+ double delta = lastnode.lat - maenode.lat;
247+ if (delta == 0.0D) {
248+ // 真東から? 単純結合
249+ // 真西から? 単純結合
250+
251+ /* [[PENDING]] */
252+ /*
253+ * とりあえず、あとまわし
254+ */
255+ }
256+ else if (delta > 0.0D) {
257+ if (arrow) {
258+ // 南から 右回りなら、東へ
259+ processEast(con, way);
260+ }
261+ else {
262+ // 南から 左回りなら、西へ
263+ processWest(con, way);
264+ }
257265 }
258266 else {
259- // 南から 左回りなら、西へ
260- processWest(con, way);
267+ // 北から
268+ if (arrow) {
269+ // 北から?右回りなら、西へ
270+ processWest(con, way);
271+ }
272+ else {
273+ // 北から?左まわりなら、東へ
274+ processEast(con, way);
275+ }
261276 }
262277 }
263278 else {
264- // 北から
265- if (arrow) {
266- // 北から?右回りなら、西へ
267- processWest(con, way);
279+ // 最終ノードが分割点でない場合には、次のWAYと接続する。
280+ int nextindex = ((imember + 1) >= relation.members.size() ? 0 : imember + 1);
281+ Member nextmember = relation.members.get(nextindex);
282+ Way addway = new Way();
283+ DbBigrelation.getWay(con, addway, nextmember.ref);
284+ addway.loadTag(con);
285+ if (addway.loadNodes(con) < 1) {
286+ Logger.logger.warning("ノードを持たないWAYに接続しようとしました。(way:id="+ addway.idref +")");
268287 }
269288 else {
270- // 北から?左まわりなら、東へ
271- processEast(con, way);
289+ way.add(con, addway);
290+ way.action = OsmNode.ACTION_MODIFY;
272291 }
273292 }
274293 }
275- else {
276- // 最終ノードが分割点でない場合には、次のWAYと接続する。
277- int nextindex = ((imember + 1) >= relation.members.size() ? 0 : imember + 1);
278- Member nextmember = relation.members.get(nextindex);
279- Way addway = new Way();
280- DbBigrelation.getWay(con, addway, nextmember.ref);
281- addway.loadTag(con);
282- addway.loadNodes(con);
283- way.add(con, addway);
284- way.action = OsmNode.ACTION_MODIFY;
285- }
286294 }
287295 }
288296 }