[Talk-lt] Mapnik

Albertas Agejevas alga at pov.lt
Thu Apr 21 06:30:02 UTC 2011


On Sat, Apr 16, 2011 at 05:04:43PM +0300, Tomas Straupis wrote:
>   Prisegu py failą, gal kolegos pitoninikai kokių nors stambių kliurkų
> pastebės, nes šiaip kodą rašiau google pagalba „search: python print,
> search: python loop, search: python variables“ ir pan. :-)

Gan gerai išėjo kaip pirmam kartui!  Rekomenduoju oficialų Pythono
tutorialą, užima vieną vakarą ir supažindina su dauguma kalbos
feature'ų:

http://docs.python.org/tutorial/index.html

> #!/usr/bin/python
> from imposm.parser import OSMParser
> 
> class Taskai(object):
>   highways = 0
> 
>   def ieskok(self, nodes):
>     # callback method for nodes
>     for osmid, tags, pos in nodes:
>       if 'historic' in tags:
>         #print tags
>         title = ''
>         description = ''
>         url = ''
>         if 'name' in tags:
>           title = tags['name']
>         if title == '':
>           title = tags['historic']
>         description = title
>         if 'url' in tags:
>           url = tags['url']
>           description += '<br><a href="%s" target="_blank">Info</a>' % url
>         if tags['historic'] == 'hill_fort' or tags['historic'] == 'monument' or tags['historic'] == 'archaeological_site':

Čia galima būtų sulankstyti eilutę taip:

         if (tags['historic'] == 'hill_fort' or
             tags['historic'] == 'monument' or 
             tags['historic'] == 'archaeological_site'):

Arba trumpiau:

         if (tags['historic'] in
	     ['hill_fort', 'monument', 'archaeological_site']):

> # instantiate counter and parser and start parsing
> f = open('textfile.txt', 'w')
> f.write('lat\tlon\ttitle\tdescription\ticonSize\ticonOffset\ticon\n')
> taskai = Taskai()
> p = OSMParser(concurrency=4, nodes_callback=taskai.ieskok)
> p.parse('lithuania_.osm')

Šitą paprastai sudeda į main() funkciją ir kviečia ją taip:

if __name__ == '__main__':
   main()

Tokiu būdu galėsi importuoti Taskai klasę iš kito skripto.  Dabar
importo metu bus vykdomas skriptas.

Albertas




More information about the Talk-lt mailing list