[Talk-it] nodi senza key/value

Paolo Molaro lupus at ximian.com
Fri Oct 10 14:19:10 BST 2008


On 10/10/08 Simone Cortesi wrote:
> conoscete un modo per selezionare dall'API o dal planet i nodi ai
> quali non è associata nessuna coppia key/value?

Dall'api non si puo' fare. Poi comunque immagino tu voglia
solo quelli che non sono usati da way, non solo quelli che non hanno
tag.
In attach il programma che usa la mia libreria. In mail privata ti mando
la lista (17 mila e piu' nodi) dell'utente simone che credo sia tu.
Si compila con: gmcs -r:OpenStreetMap.dll osm-search.cs.

> mi serve recuperare i miei....ne ho lasciati parecchi in giro e vorrei
> cancellarli prima di caricare i confini.

Quando la cosa riguarda migliaia di dati e' meglio farla su un server
separato finche' non si sono risolti i bachi.

lupus

-- 
-----------------------------------------------------------------
lupus at debian.org                                     debian/rules
lupus at ximian.com                             Monkeys do it better
-------------- next part --------------
using System;
using System.Xml;
using System.IO;
using System.Collections;
using System.Collections.Generic;
using OpenStreetMap;

class OsmSearch {
	static void ReadFile (string name)
	{
		Stream stream = File.OpenRead (name);
		Dictionary<long,bool> unused_nodes = new Dictionary<long,bool> ();
		int removed = 0;

		foreach (OsmObject obj in DataBase.LoadObjects (stream)) {
			Node node = obj as Node;
			if (node != null) {
				if (node.User == "simone" && node.Tags.Count == 0) {
					unused_nodes.Add (node.ID, true);
				}
				continue;
			}
			Way way = obj as Way;
			if (way != null) {
				foreach (long n in way.Nodes) {
					if (unused_nodes.ContainsKey (n)) {
						unused_nodes.Remove (n);
						removed++;
					}
				}
			}
			continue;
		}
		Console.WriteLine ("removed: {0}", removed);
		foreach (long i in unused_nodes.Keys) {
			Console.WriteLine (i);
		}
	}

	static void Main (string[] args) {
		for (int i = 0; i < args.Length; ++i)
			ReadFile (args [i]);
	}
}


More information about the Talk-it mailing list