text: Sofia Gallery: Stepping Out In Sofia From clinics to store visits to the iconic photo, the elite eight of the Garanti Koza WTA Tournament Of Champions have been stepping out to spend time with the wonderful fans. All the best pics, here. Published October 31, 2013 12:00 Can you spot the two WTA stars in this picture? They're sort of at the back, to the left a bit... They were Anastasia Pavlyuchenkova and Sam Stosur - at a kids clinic on Sunday before the tournament. Sixty kids from the national tennis center in Sofia came out - they played and got autographs, too. The elite eight had their traditional iconic photo taken in front of the Aleksander Nevski Cathedral. Afterwards, the eight players were split into two round robin groups - first, Group Sredets... And Group Serdika. The names are central districts of Sofia, and names given to Sofia in ancient times. Alizé Cornet stepped out during a day off on Thursday to visit the mTel store in the city. mTel is one of Bulgaria's biggest mobile companies - Cornet met fans and signed autographs as well. Cornet will play Anastasia Pavlyuchenkova on Friday - the winner will advance to the semifinals. Back at the tournament venue, Yvonne Meusburger conducted a kids clinic on Thursday afternoon. Meusburger is the second alternate here - the first alternate, Elina Svitolina, has joined the draw. Meusburger is a veteran on the rise - she recently turned 30 and cracked the Top 50 for the first time. Topics: 2013, sofia - tournament of champions, tournaments, news, photos or videos, tsvetana pironkova, elena vesnina, ana ivanovic, simona halep, maria kirilenko, yvonne meusburger, samantha stosur, anastasia pavlyuchenkova, alize cornet, sofia [+] More Share this page! Print Email Related photos Bastad Gallery: Concerts & Parties July 20, 2014 From the player party to special visits with Xerox and a Swedish pop idol rocking center court, the WTA stars had a blast all week off the match courts in Bastad. Sofia Gallery: A Few More Memories November 06, 2013 From the walk-out to the world class tennis and to all of the fan experiences, it was a magical week at the Garanti Koza WTA Tournament Of Champions. See a dozen more pics here... Sofia Gallery: The Player Party November 04, 2013 The WTA stars headed to the Esterhasi Restaurant in downtown Sofia for the Garanti Koza WTA Tournament Of Champions player party. See some of the best pics from the event right here. To The Top 3


text:
This review is outdated. Information may be inaccurate.
Bare Adventures brings you fresh-faced hunks who love bare backing. If you like men who look innocent and act anything but inexperienced, then this site is great place to visit. The "adventure" part of the sitename seems to come from some of the interesting locations. Many scenes are shot outside, but you'll also see guys in military barracks, at the gym or in a car or bathroom.
BareAdventures has been redesigned and now, you'll no longer see sections labeled "adventure" and "sports" so I was a tad confused at first. The video section had fewer vids than I found last time and I couldn't find my favorite scene that I'll describe later. Turns out that it along with 28 other scenes had been moved to an extra footage area.
These scenes seem to be exclusive to this site and not simply part of the rest of the content. Adding all the scenes together, you'll find 163 videos and the collection is updated weekly. You'll discover that over half offer great-quality playback and they've also been coming in a high-def streaming-only format since the end of May 2011. You will find some files for portable devices.
My fave scene involves boxing. It opens inside the "Bad Boys Club" where there is no responsible supervision overseeing the activities. Luckily, instead of being brutal to one another, these young hotties are lovers, not fighters. They get naughty in a nonviolent way. It turns into a combination gay orgy/gangbang with bystanders jerking off and touching each other, while one guy takes pole after raw pole in his mouth and his butthole.
There are about 245 photo galleries. They are filled with crisp photos, although you can only see them in their full high-res glory if you download them in their Zip files. You will see spreads from some of the videos and solo model shoots organized by name of many of the handsome stars. I liked the variety of the models. They were all slim and hairless, but each one still has a unique charm.
Some of the dudes have naturally tight and defined bods, while others have a bit more muscle. They look like lean and mean jocks in the early prime of their lives. They still have lithe frames, but with killer abs, slightly thicker thighs, tight behinds and noticeable biceps. No matter how slender these studs are, they still look healthy and not malnourished. I guess they have to keep their energy up for all that fucking.
You get five more Bareback Access sites: Bareback Twink, Bareback That Hole, Sweet And Raw, Breed Me Raw and Red Hot Latinos. However, Bare Adventures is easy to recommend, even without taking its equally hot bonuses into consideration.
|By: Will Peters
|Number of Reviews: 1483
|Average Score: 63.9
$22.95/30 days (Reg. $
|$59.95/90 days, rebills at $49.95
|$119.40/365 days
|Cross Sales: 1 pre-checked
|Pic sets: 245+
|Pics per set: 50
|Zip sets: Yes
|Pic Res: N/A
|High Res: Yes
|Number of movies: 163+
|HD Porn: Yes
|Streaming: Yes
|Average Length: 22 mins
|Full length videos: Yes
|Download Limits: No
|Video Formats:
Flash (1920x1080; 4883k)
MP4 (1024x576; 2190k)
Flash (streaming)
|Preview BareAdventures.com members area
|Independent Biller(s):
|NetBilling, Epoch
|Customer Service:
Pros & Cons
-exclusive content
-high-def streaming videos
-mostly great-quality downloads
-can't save favorites
-can't leave comments
-no advanced search
09/27/2011- Stays at 78. -Will
05/03/2011- Stays at 78. -Will
06/26/2010- Stays at 78. -Will
11/24/2009- Stays at 78. -Tuesday - Initial review: 4/24/2009
|Content Quality
|Content Amount
|Unique Content
|Video Downloads
|Video Streaming
|Other Score
|User Score: N/A
|0 votes
|0 comments
|User Top Rated Sites

subset: commoncrawl


text:
Sons of Anarchy Review: "Fa Guan"by Matt Richenthal at . Comments
If the rift between Jax and Clay reached a boiling point last week, it became a full-fledged inferno this week.
Or, at least that's the way Jax sees is as the Club's main source of revenue goes up in flames. Will the crew rise from the ashes, and if it does, will Jax still be there with them? Check out a full recap of "Fa Guan" and then our review below...
What Worked: Bobby's Banana Bread
Is there anything this guy can't do? He's suave with the ladies, he's kept a cool head during the tension between Clay and Jax, he found leverage to use against the judge and now he not only makes banana bread, but serves it while it's still warm!
What Didn't: Jax's Pudding
If the proof is in the pudding, then Jax's pudding must be lacking consistency. Normally the most thoughtful SAMCRO member, Jax spent the entire episode seeing Clay's hand in everything, from the porn star bust to the fire at Kara Kara.
What Really Worked: New Couple Alert: Opie and Lyla
This budding romance was christened with the sweetest kisses in the history of porn (even if their kids were none too thrilled). The romance has been built up nicely and hopefully it will help bring Opie back from the dark place he's inhabited since Donna's murder.
What Really Didn't: New Couple Alert: Gemma and Unser
Look, perhaps Gemma can't tell anyone except Unser about the inner turmoil she's gone through since her rape at the hands of AJ Weston, but c'mon. Get a support group or something, Gemma. Gemma needs to get back to being the strong, independent Head Old Lady of SAMCRO and Unser isn't going to get her there.
What Really, Really Worked: Lines
Two dynamite lines in tonight's episode. The first, from Jax, came as a retort to Clay's attempts to lay the blame of Luanne's death at his feet: "You are really gonna stand there and lay the guilt of a dead wife on me?" It marked the second time in as many episodes that Jax has come thisclose to publicly outing Clay for his role in Donna's murder. Only this time, Bobby picked up on it. He can't be too far off from putting the pieces together.
Deputy Hale also got in a good one, telling Clay "I know the greater devil when I see it." Hale is smart - he knows exactly who he's dealing with when it comes to both Zobelle and Clay. He's not going to let Zobelle use him to run Clay out of town, but he is smart enough to help SAMCRO against Zobelle.
What Really, Really Didn't: Cracks
This episode set the land speed record for most gratuitous male ass shots. Look, Sons of Anarchy - I'm going to go out on a limb and say that most of your viewers are men. We have male asses. We can see them anytime we want. So if you are going to note that there will be nudity in the episode, let's make it of the fairer sex, okay? Jeez - two prostitution stings and the last hurrah of Kara Kara and the final score was Full Male Ass 3, G-String Females 2. That's a loss in my book.
Matt Richenthal is the Editor in Chief of TV Fanatic. Follow him on Twitter and on Google+.Tags: Sons of Anarchy, Reviews
Great review, although I, like my fellow commentators, wouldn't be so quick as you are to assume the SOA viewership is exclusively or primarily male. My mother, sister, and I are all devoted fans AND smokin' hot ladies. Gratuitous male ass shots? Is there such a thing? Considering that particularly this season has featured regular shots from the inner sanctum of a porn studio (scratch that - two porn studios), I'd hardly call the cameos of a few male derrieres gratuitous. In fact, I'd call them insufficient - in number and frequency, not content, of course. The large majority of nudity shown in tv and film tends to focus on women's bodies. It gets a little old for us to always have to see "gratuitous" T&A shots, whether naked or not, of body parts WE have - now you know what it feels like! Besides, let's all just be honest and agree that the guys on the show have really cute asses. No true SOA fan should fault you or challenge your manhood for admitting the obvious. And the ladies might like you more for it.
Heh. Seems like your complaint about the male asses is totally outnumbered, my friend. I, too, am a rabid Sons fan (I even use the show in my classroom, if you can believe that), and I have no problem whatsoever with the views we're offered. Here's what I'm really wondering, though; did Chuck escape the warehouse fire? If he did, then he's got a story to tell, and what's really going to matter is to whom he goes with this information. If he goes to Jax with it, the outcome is going to be totally different than if he takes it to Clay. I'm eagerly awaiting next Tuesday...
Sorry dudes, you're not the only gender watching this show..I am prettttyyyyy sure all the ladies will welcome ass shots(or anything else) and especially from Jax!!!...So typical, the MEN are thinking of only themselves..Relax boys-you should be a bit tougher rather than letting a little "nudity" bother you...
are you kidding?! ive been a borderline psychotic fan since season 1 started ; im a 24 year old woman. my fiance is in the army at basic training for the next few months -SO- any and every shirtless / ass shot of an extremely sexy man is amazinggg! charlie hunnam [jax] is mmm mmm good to look at w/ or w/out clothes.
ladies watch this show too! i have watched it since day one and thoroughly enjoy it. the ass shot banked. the ladies are tuning in. it ain't a boy's club!
With more and more wives getting into the show, I think the views were nice! Although you guys could have had all female shots you wanted, I'm happy with just the Jax shot, nom...nomnomnom....


text:
29 August 2007
This post came a bit late as I was waiting for my nephew's birthday cake to come. Today is his 3-year-old birthday and this "Construction Site" cake is ordered specially for him as we know that he is very obssessed about big trucks nowadays. The cake is from PrimaDeli and I find the cake quite nice and not too sweet.
Besides that, I also made some Chocolate Muffins for the celebration of his birthday at his playgroup. I just spread some Nutella on top and then put a letter on each muffin using his favourite "ABC biscuit". Not very creative but it's the best I can do now. Haha... My sis told me that luckily I did not try to put decorations for the muffins cos some of the kids in the playgroup did not finish the cake and the teachers had to throw them all away...
Lastly, I also made some cream puffs last week. It wasn't quite successful as I added too little eggs in the beginning and the puffs did not rise and expand a lot. I added more eggs later to make the batter smoother and the result was more satisfactory. Now I understand how important it is to get the right consistency when adding eggs and how it will affect the result of the cream puffs.
Wednesday, August 29, 2007
Nephew's Birthday
Posted by Small Small Baker
4 comments:
Practice does makes perfect...and you are getting very good :))ReplyDelete
Hi happy homebaker! Thanks for your encouragement. I will "jia you" :))ReplyDelete
Don't worry... this is your "Ai Xin" products and i bet you will do better next round.. at least u try rite :) Jai You!ReplyDelete
Hi Ellena, thanks for the kind encouragement. Ya, looks is not important. I ask my nephew "do you want me to make the chocolate muffins again?" and he answer "yes". :)ReplyDelete
Subscribe to: Post Comments (Atom)


text:
Please confirm that your email address is correct, so you can successfully receive this alert.
by Clara Claiborne Park; Boston, Little, Brown and Company, 2001; 225 pages, $23.95
In 1967, in a book titled The Siege, Clara Claiborne Park wrote an account of her daughter's first eight years, years in which mother and daughter learned to live together with the daughter's autism. In Exiting Nirvana, the sequel to that book, Park looks again at the life of her daughter, Jessica Park, who is now in her forties.
Exiting Nirvana provides readers with what is perhaps the best available description of autism from an observer's perspective and the finest exposition of a parent's decades-long experience with a child with autism. These reasons alone would be enough to make Park's account well worth reading, but her book offers much more than that.
Exiting Nirvana is the story of a mother and daughter's journey toward manufacturing personhood in an individual for whom being a person in an interpersonal and interactive sense is not a natural part of her being. Park not only describes the monumental efforts to achieve this end but also confesses her doubts, at different stages of Jessy's life, about the wisdom of the journey.
The book's title reflects the author's uncertainty about having embarked on this quest. Park wonders, "Is it not happiness to want nothing but what you have?" She wonders about her invasion of her daughter's world, "an abstract world of order, repetition, all that represented intelligibility, security, in the bewilderment of talk she could not understand, body language she could not read, social clues she could not interpret." Should she attempt to socially educate or maybe even program a child "to whom algebraic processes make more sense than the social interactions of Dick, Jane, and Sally"?
Park arrives at the answer to her question early in Jessy's life. On the whole her answer is in the affirmative. The doubts, however, have never entirely dissipated.
The reader is taken along, through travails, trials, and tribulations, to observe the virtual transformation of Jessy Park as she emerges from her self-contained, orderly, isolated world to become an individual who learns through explicit, didactic instruction and repetition to have usable language, to recognize—but not really ever to read—social cues, to learn social phrases, to experience pleasure, and to experience hurtfulness and loss. Everything must be taught by her mother—and others who move in and out of Jessy's life, most notably paid companions—and everything must be learned by Jessy.
Nothing about being communicative or socially interactive in the world comes naturally to Jessy. "But words are available now," Park writes, "preassembled, replicable, reliable. Like maps, like charts, like calendars, like schedules, all of which she could read easily before she could read text, they allow her to lay hold of her experience, bring it under the mind's control." Park was trying to teach her child that the world is ever changing, that all interactions are filled with nuances, but her pupil "wanted the world to stay still, needed it to stay still, because if it would only stay still she could understand it."
Mother as teacher needed to understand daughter as pupil—not at all an easy task. As Park points out, "For Jessy, things are what they are, and if they have meanings, they are wholly idiosyncratic. To understand her is to understand that." So while mother is teaching Jessy to communicate with her so that Jessy can communicate with others in the world, mother is often at a loss as to what Jessy is communicating to her when Jessy is using her language, not mother's. Frustrations abound on both sides. This perpetual quagmire exacerbates whatever the cognitive incapacities are in an individual with autism and contributes to making all learning rote learning.
Exiting Nirvana chronicles a success story. Jessy Park has become an accomplished artist (her work is on the cover of this issue of the journal; also see her Web site at www.jessica park.com); she is employed full-time in the Williams College mail room; she manages parts of her day-to-day life while living in her parent's home; and she contributes in useful ways to family life. She can perform, but can she interact? That remains Park's question even at this point in her daughter's life. Park observes, "Thinking of others, of course, is hard when you don't have a 'theory of the mind' to allow you to see something from another point of view. Even in the unemotional, physical world, Jessy can't do this." But the possibility that she can is there at the end of Exiting Nirvana, and perhaps in a future book that chronicles the next 20 years of Jessy Park's life, we will read about how empathy was learned.
Exiting Nirvana is an extraordinarily well-written, moving account of a mother's struggle not only to bring her daughter into the world but also to teach her how to have an ordinary life. Park writes, "These days, however, most of her discouragements and satisfactions are like those of other people—less interesting to read about than the joys and anxieties of her private universe, yet reassuring in their very ordinariness." At the same time, Park and the other family members have come to appreciate Jessy's uniqueness. "We realize we no longer even dream of the triumphant emergence into normality, we no longer even want her to exit Nirvana all the way. In a development we never could have envisaged, it looks as if she, and we, can have it both ways."
The readership of this book is virtually the universe of readers. Anyone interested in child psychiatry should grab this book immediately. Any parent of a special-needs child of any kind will glean much from this book. Anyone interested in existential questions of being can learn from Clara and Jessy's journey together. I would make this book required reading in the curriculum of every discipline in the mental health field.
I end this review on a personal note. I had the opportunity, when Jessy Park was about 11 years old, to spend time with her, to observe her, and to learn from her, when I was a Williams College psychology major. So I can tell you that, if anything, Clara Claiborne Park is modest in her description of the scope of the tasks presented to her and of the accomplishments she and her daughter have made. But there is a stability to autism and a certain immutability to the unnaturalness of the social connectedness in those with the disorder. While reading Exiting Nirvana, I asked my son, Jesse, a Williams College freshman who goes to the mail room regularly to pick up his mail, if he knew Jessy Park. I told him she works in the mail room. He told me he did not know her. I told him she has autism. He immediately said, "Oh, I know her." "Jesse," I asked, "you didn't know her when I told you her name, but knew her immediately when I said she had autism; how is that?" His response: "Everything she says sounds rehearsed." As Clara Claiborne Park brilliantly points out, so it is, so it is.
Dr. Geller is professor of psychiatry and director of public-sector psychiatry at the University of Massachusetts Medical School in Worcester.
Download citation file:


text:
Birds and PlanesThis photo was shot on film. Taken by projectsnap with a Yashica T3 loaded with Lomography Color Negative 100 (35mm) film (available in our Online Shop) in Taguig, Pasay, Philippines. These tags describe this photo: bird, birds, and pigeons. Date: 2012-04. Time: Afternoon. This photo can also be found in the album Birds and Planes.
Please login to get more out of this site
You are currently not logged in, do so now to add comments, like articles as well as photos, submit to competitions, translate articles and gain access to unlimited photo upload! If you are not registered yet, go here to find out more about Lomography and join now! If you just want a limited account for now you can use Twitter or Facebook. We would love to have you as a member here!
9 people like this photo
Liking photos helps us to present the best ones to you and others. 9 people like this photo. 9 people like this photo: martinpruv, sammi80, renenob, boobert, wapclub, nilard12, icuresick, jawatembak, and sirio174.
3 comments
bumu @boobert
With the blessing from the Master...
@projectsnap Good Job!
Where is this?
Nearby popular photos – see more
Nearby LomoLocations
Cemeteries: Manila American Cemetery and Memorial with the Shutter Revolution
Last May 1, our film photography group "Shutter Revolution" decided to go on an adventure in…
American Memorial Cemetery, Manila
The American Memorial Cemetery located in The BGC, Manila is not just another memorial cemet…
Cozy Date Spots: Bonifacio High Street
Can I just say how happy I am with these photos? After a few botched up rolls of films, fina…
Fully Booked
Sporting five levels of bibliophile friendly fare, Fully Booked at Bonifacio High Street is …


text:
South-East User group meeting:
2nd South-East QGIS user group – 4th November
The Venue: Royal Borough of Windsor and Maidenhead, Town Hall, St. Ives Road, Maidenhead. SL6 1RF.
Tickets: You can grab them from here and they are FREE!
9.30-10: Arrive
10.00: Welcome
10.15 – 12: Lutra Consultancy – Python Plugin Development *
12 – 12.30: Discussion / Its your floor: This part of the agenda is entirely driven by you. It's your chance to stand up and let everyone know what you are doing with QGIS or ask a burning question about QGIS? The best question or lightening talk will win a prize! If your lightening talk requires a bit of power-point, then put together no more than a 5 slider presentation and send them over to firstname.lastname@example.com
12.30 – 1.30: Lunch / Networking: There is a cafe within the Town Hall, or a plethora of eating establishments in Maidenhead.
1.30 – 3.00: Talks
Tim Martin from the OS on Terrain5, Topo and building heights to create a 3d using the QGIS2ThreeJs plugin. *
Simon Miles from the RBWM doing a bit of show and tell on how QGIS is used and configured at the Council.
3.00 – 5.00: Unconference: This part of the day is over to you, its your user group! Bring along your own laptop, project or piece of code; or borrow one of the laptops dotted around the room and do a bit of show and tell, or ask someone a burning practical QGIS question. Some of the machines will have QGIS Master on them and there will be a Windows tablet running QGIS on to have a play with. Some suggested topics – Styling features, Creating forms, WMS resources, Print Composer
* Bring along your own laptop if you would like to follow along with the Plugin workshop in morning or with Tim Martin in the afternoon. Software and data requirements will be forwarded to you prior to the day.
PyQGIS Resources
Here is a short list of resources available when writing Python code in QGIS. If you know of others, please leave a comment.
In alphabetical order:
- Choose the version to match your QGIS install
Example Code
- Existing plugins can be a great learning tool
- Code Snippets in the PyQGIS Cookbook
- Script Runner: Run scripts to automate QGIS tasks
- Plugin Builder: Create a starter plugin that you can customize to complete your own plugin
- pb_tool: Tool to compile and deploy your plugins
Getting Started Writing QGIS Python Plugins
This blog post is a QGIS plugin tutorial for beginners. It was written to support a workshop we ran for the Scottish QGIS user group here in the UK and aims to be a simple step-by-step guide.
In this tutorial you will develop your first QGIS plugin – a Map Tool for selecting the closest feature within multiple loaded vector layers. Knowledge of Python is recommended but not required.
The Goal
Before we get started let's look at where we're going.
We will develop a plugin that implements a new QGIS Map Tool. The Identify Features and Pan Map tools are both examples of QGIS Map Tools. A Map Tool is a tool which performs an action when used with the map canvas.
We will create a new Select Nearest Feature Map Tool which will sit in the plugins toolbar.
Our Select Nearest Feature Map Tool will allow the user to select the feature nearest a mouse click on the canvas. For example, clicking here:
would select the following polygon:
The Starting Point
Before getting started:
- Install a text editor (e.g. Geany)
- Download and extract this code and data
- Install QGIS >= 2.4
- Install the Plugin Reloader plugin
- Open the QGIS API documentation
The QGIS Plugin Builder plugin was used to create a base plugin which we'll modify to fit our requirements.
This base plugin can be found in the zip file mentioned above under code/01__Empty Plugin/NearestFeature
code/01__Empty Plugin contains a batch file install.bat that can be used to copy the plugin into your QGIS plugins folder, making it available to QGIS.
Let's now load and run this simple base plugin in QGIS.
- Run install.bat
- Restart QGIS if already open
- Open the Plugin Manager: Plugins > Manage and Install Plugins
- Enable the Nearest Feature plugin
A new action should now be visible in the plugins toolbar which opens the following dialog:
Creating a Basic Map Tool
When activated, our plugin currently shows a simple dialog (functionality provided by the Plugin Builder plugin. We're going to adapt it to instead activate a Map Tool.
A basic Map Tool is included within the zip file mentioned above. It can be found in nearest_feature_map_tool.py in the Additional Files folder.
- Copy nearest_feature_map_tool.py into the NearestFeature folder and open it in an editor.
- Note that many of the code segments (highlighted in
white) below link to relevant parts of the API docs. Those links will open in a dedicated browser tab.
nearest_feature_tool.py defines a new
NearestFeatureMapTool class (line 28) which inherits (is based on)
QgsMapTool, the QGIS Map Tool class. Its
__init__() method expects to be passed a reference to a
QgsMapCanvas. This canvas reference is passed to the constructor of the underlying
QgsMapTool class on line 32 and then stored on line 33 for later use. The QGIS API documentation describes the functionality made available by
On line 34 we define a simple, different-looking cursor (a
QCursor based on
Qt.CrossCursor) later used to indicate that the Map Tool is active.
Our class definition features a method called
activate(). Notice the API documentation for
QgsMapTool already defines a method with the same name. Any methods defined as virtual methods in the API documentation can be overwritten or redefined as they have been within this file. Here we have overwritten the default implementation of
activate() method is called when the tool is activated. The new cursor based on
Qt.CrossCursor defined above is set with a call to
For the moment, when activated, our Map Tool would simply change the cursor style – that's all.
Great – next we'll get our plugin to use the new Map Tool.
Connecting the Basic Map Tool
In this section we will modify the plugin to make use of our new Map Tool.
- Open nearest_feature.py in a text editor.
We need to first import the
NearestFeatureMapTool class before we can use it.
- Add the following code towards the top of the file just before
os.pathis imported:
from nearest_feature_map_tool import NearestFeatureMapTool
Next we will create a new instance of the
NearestFeatureMapTool class and store a reference to it in
- Add the following code to the
initGui()method just before the call to
self.add_action()taking care to ensure the indentation is correct:
Create a new NearestFeatureMapTool and keep reference
self.nearestFeatureMapTool = NearestFeatureMapTool(self.iface.mapCanvas()) ```
Notice that a reference to the map canvas has been passed when creating the new NearestFeatureMapTool instance.
run() method is called when our plugin is called by the user. It's currently used to show the dialog we saw previously. Let's overwrite its current implementation with the following:
Simply activate our tool
self.iface.mapCanvas().setMapTool(self.nearestFeatureMapTool) ```
The QGIS map canvas (
QgsMapCanvas class) provides the
setMapTool() method for setting map tools. This method takes a reference to the new map tool, in this case a reference to a
To ensure that we leave things in a clean state when the plugin is unloaded (or reloaded) we should also ensure the Map Tool is unset when the plugin's
unload() method is called.
- Add the following code to the end of the
Unset the map tool in case it's set
self.iface.mapCanvas().unsetMapTool(self.nearestFeatureMapTool) ```
Now let's see the new map tool in action.
- Save your files
- Run install.bat to copy the updated files to the QGIS plugin folder
- Configure the Plugin Reloader plugin to reload the NearestFeature plugin using its configure button,
- Reload the Nearest Feature plugin using the button.
- Click the button
When passing the mouse over the map canvas the cursor should now be shown as a simple cursor resembling a plus sign. Congratulations – the Map Tool is being activated.
Map Tool State
When you use the Identify Features Map Tool you'll notice that its button remains depressed when the tool is in use. The button for our map tool does not yet act in this way. Let's fix that.
The action (
QAction) associated with our plugin is defined in the
initGui() method with a call to
self.add_action() actually returns a reference to the new action that's been added. We'll make use of this behaviour to make the action / button associated with our Map Tool toggleable (checkable).
- Modify the call to
add_action()as follows:
``` action = self.add_action(
text=self.tr(u'Select nearest feature.'),
action.setCheckable(True) ```
We now use the reference to the new action to make it checkable.
QgsMapTool class has a
setAction() method which can be used to associate a
QAction with the Map Tool. This allows the Map Tool to handle making the associated button look pressed.
- Add the following line to the end of
- Save your files and run install.bat
- Reload the Nearest Feature plugin using the button
- Click the button
The button should now remain pressed, indicating that the tool is in use.
- Activate the Identify Features tool
The Nearest Feature button should now appear unpressed.
Handling Mouse Clicks
QgsMapTool class has a number of methods for handling user events such as mouse clicks and movement. We will override the
canvasReleaseEvent() method to implement the search for the closest feature.
canvasReleaseEvent() is called whenever the user clicks on the map canvas and is passed a
QMouseEvent as an argument.
We will now write some functionality which:
- Loops through all visible vector layers and for each:
- Deselects all features
- Loops through all features and for each:
- Determines their distance from the mouse click
- Keeps track of the closest feature and its distance
- Determines the closest feature from all layers
- Selects that feature
- Add the following method to the NearestFeatureMapTool class:
``` def canvasReleaseEvent(self, mouseEvent):
Each time the mouse is clicked on the map canvas, perform
the following tasks:
Loop through all visible vector layers and for each:
Ensure no features are selected
Determine the distance of the closes feature in the layer to the mouse click
Keep track of the layer id and id of the closest feature
Select the id of the closes feature
layerData = []
for layer in self.canvas.layers():
if layer.type() != QgsMapLayer.VectorLayer:
# Ignore this layer as it's not a vector
if layer.featureCount() == 0:
# There are no features - skip
layers() method of
QgsMapCanvas (stored earlier in
self.canvas) returns a list of
QgsMapLayer. These are references to all visible layers and could represent vector layers, raster layers or even plugin layers.
We use the
type() and
featureCount() methods to skip non-vector layers and empty vector layers.
Finally we use the layer's
removeSelection() method to clear any existing selection.
layerData is a list that we'll use in a moment.
Our plugin now clears the selection in all visible vector layers.
- Open the Shapefiles included in the Data folder.
- Make a selection of one or more layers.
- Reload the plugin and ensure it is working as expected (removing any selection).
Accessing Features and Geometry
We now need access to each feature and its geometry to determine its distance from the mouse click.
- Add the following code to
canvasReleaseEvent()within the loop over layers:
Determine the location of the click in real-world coords
layerPoint = self.toLayerCoordinates( layer, mouseEvent.pos() )
shortestDistance = float("inf") closestFeatureId = -1
Loop through all features in the layer
for f in layer.getFeatures():
dist = f.geometry().distance( QgsGeometry.fromPoint( layerPoint) )
if dist < shortestDistance:
shortestDistance = dist
closestFeatureId = f.id()
info = (layer, closestFeatureId, shortestDistance) layerData.append(info) ```
The mouse click event (a
QMouseEvent) is stored in
mouseEvent. Its
pos() method returns a
QPoint describing the position of the mouse click relative to the map canvas (x and y pixel coordinates). To calculate its distance to each feature we'll need to first convert the mouse click position into real world (layer) coordinates. This can be done using a call to
QgsMapTool.toLayerCoordinates() which automatically deals with on-the-fly projection and returns a
QPoint in layer coordinates.
The features of a vector layer can be accessed using the layer's
getFeatures() method which returns (by default) a list of all
QgsFeature in the layer that we can iterate over using a simple loop.
With access to features we can easily gain access to geometry using
QgsFeature.geometry(). The
QgsGeometry class has a number of spatial relationship methods including
distance() which returns the distance to a second
QgsGeometry passed as an argument.
In the code above we loop over all features, keeping track of the feature id of the closest feature using
QgsFeature.id(). The shortest distance and closest feature id are stored in
shortestDistance and
closestFeature. When we are finished iterating through all the features in this layer, we store a note of the layer, its closest feature id and associated distance into
Note that we convert
layerPoint (a
QgsPoint) into a
QgsGeometry so we can use it directly in spatial relationship operations such as
Completing canvasReleaseEvent
We're almost done. At this point
layerData is a list of tuples, one for each vector layer containing:
- A reference to the layer
- The id of the closest feature within that layer
- The distance of that closest feature from the mouse click
Now we can simply sort
layerData by distance (its 3rd column) and make a selection based on the layer and feature in the first row of
- Add the following code to
canvasReleaseEvent()outside the outer for loop:
``` if not len(layerData) > 0:
# Looks like no vector layers were found - do nothing
Sort the layer information by shortest distance
layerData.sort( key=lambda element: element[2] )
Select the closest feature
layerWithClosestFeature, closestFeatureId, shortestDistance = layerData[0] layerWithClosestFeature.select( closestFeatureId ) ```
The code above returns early if no workable vector layers were found. It sorts
layerData (the list of tuples) by the 3rd element (the distance).
The code then calls
QgsVectorLayer.select() to select the closest feature by its feature id.
The plugin should now be finished.
- Reload the plugin
- Ensure it works as expected.
Within this tutorial we've worked briefly with the following parts of the QGIS API:
- Map Tools
- Map Canvas
- Vector Layers
- Features
- Geometry
Hopefully this has been a useful tutorial. Please feel free to contact us with any specific questions.
A Quick Guide to Getting Started with PyQGIS on Windows
Getting started with Python and QGIS can be a bit overwhelming. In this post we give you a quick start to get you up and running and maybe make your PyQGIS life a little easier.
There are likely many ways to setup a working PyQGIS development environment—this one works pretty well.
- Requirements
- Installing
- Working on the Command Line
- IDE Example
- Workflow
- Troubleshooting
- OSGeo4W Advanced Install of QGIS
- pip (for installing/managing Python packages)
- pb_tool (cross-platform tool for compiling/deploying/distributing QGIS plugin)
- A customized startup script to set the environment (pyqgis.cmd)
- IDE (optional)
- Vim (just kidding)
We'll start with the installs.
Almost everything we need can be installed using the OSGeo4W installer available on the QGIS website.
From the QGIS website, download the appropriate network installer (32 or 64 bit)
- Run the installer and choose the Advanced Install option
- Install from Internet
- Choose a directory for the install—I prefer a path without spaces such as C:\OSGeo4W
- Accept default for local package directory and Start menu name
- Tweak network connection option if needed on the Select Your Internet Connection screen
- Accept default download site location
- From the Select packages screen, select the following for installation:
Desktop -> qgis: QGIS Desktop
Libs -> qt4-devel(needed for lrelease/translations)
Libs -> setuptools(needed for installing pip)
When you click Next a bunch of additional packages will be suggested—just accept them and continue the install.
Once complete you will have a functioning QGIS install along with the other
parts we need. If you want to work with the nightly build of QGIS, choose
Desktop -> qgis-dev instead.
If you've already installed QGIS using the OSGeo4W installer, just install the
setutoolspackages. If you installed QGIS using the standalone installer, the easiest option is to remove it and install from OSGeo4W. You can run both the standalone and OSGeo4W versions on the same machine, but you need to be extra careful not to mix up the environment.
Setting the Environment
To continue with the setup, we need to set the environment by creating a
script. The following is adapted from several sources, and trimmed down to the
minimum. Copy and paste it into a
file named
pyqgis.cmd and save it to a convenient location (like your HOME
@echo off
SET OSGEO4W_ROOT=C:\OSGeo4W
call "%OSGEO4W_ROOT%"\bin\o4w_env.bat
call "%OSGEO4W_ROOT%"\apps\grass\grass-6.4.3\etc\env.bat
@echo off
path %PATH%;%OSGEO4W_ROOT%\apps\qgis\bin
path %PATH%;%OSGEO4W_ROOT%\apps\grass\grass-6.4.3\lib
set PYTHONPATH=%PYTHONPATH%;%OSGEO4W_ROOT%\apps\qgis\python;
set PYTHONPATH=%PYTHONPATH%;%OSGEO4W_ROOT%\apps\Python27\Lib\site-packages
set QGIS_PREFIX_PATH=%OSGEO4W_ROOT%\apps\qgis
set PATH=C:\Program Files (x86)\Git\cmd;C:\Program Files (x86)\Vim\vim74;%PATH%
cd %HOMEPATH%\development
You should customize the
set PATH statement to add any paths you want
available when working from the command line. I added paths to my
git and
vim installs.
cd %HOMEPATH%\development statement starts the shell in my normal working
directory—customize or remove as you see fit.
The last line starts a
cmd shell with the settings specified above it. We'll
see an example of starting an IDE in a bit.
You can test to make sure all is well by double-clicking on our
script, then starting Python and attempting to import one of the QGIS modules:
Python 2.7.5 (default, May 15 2013, 22:44:16) [MSC v.1500 64 bit (AMD64)] on win
Type "help", "copyright", "credits" or "license" for more information.
>>> import qgis.core
If you don't get any complaints on import, things are looking good.
Python Packages
We need a couple of Python packages as well.
There are several ways to install
pip, but since we installed
setuptools we
can use
easy_install pip
Make sure to issue this command from your customized shell (double-click on pyqgis.cmd to start it).
pip installed we can use it to install
pip install pb_tool
More information on using
pb_tool is available on the
project website.
Working on the Command Line
Just double-click on your
pyqgis.cmd script from the Explorer or a desktop
shortcut to start a cmd shell. From here you can use Python interactively and
also use
pb_tool to compile and deploy your plugin for testing.
IDE Example
With slight modification, we can start our IDE with the proper settings to recognize the QGIS libraries:
@echo off
SET OSGEO4W_ROOT=C:\OSGeo4W
call "%OSGEO4W_ROOT%"\bin\o4w_env.bat
call "%OSGEO4W_ROOT%"\apps\grass\grass-6.4.3\etc\env.bat
@echo off
path %PATH%;%OSGEO4W_ROOT%\apps\qgis\bin
path %PATH%;%OSGEO4W_ROOT%\apps\grass\grass-6.4.3\lib
set PYTHONPATH=%PYTHONPATH%;%OSGEO4W_ROOT%\apps\qgis\python;
set PYTHONPATH=%PYTHONPATH%;%OSGEO4W_ROOT%\apps\Python27\Lib\site-packages
set QGIS_PREFIX_PATH=%OSGEO4W_ROOT%\apps\qgis
set PATH=C:\Program Files (x86)\Git\cmd;C:\Program Files (x86)\Vim\vim74;%PATH%
cd %HOMEPATH%\development
start "PyCharm aware of Quantum GIS" /B "C:\Program Files (x86)\JetBrains\PyCharm 3.4.1\bin\pycharm.exe" %*
We only changed the last line, adding the
start statement with the path to the
IDE (PyCharm). If you save this to something like
pycharm.cmd, you can
double-click on it to start PyCharm. The same method works for other IDEs, such
as PyDev.
Within your IDE settings, point it to use the Python interpreter included with
OSGeo4W—typically at:
%OSGEO4W_ROOT%\bin\python.exe. This will make it pick up
all the QGIS goodies needed for development, completion, and debugging. In my
OSGEO4W_ROOT is
C:\OSGeo4W, so in the IDE, the path to the correct
Python interpreter would be:
Make sure you adjust the paths in your .cmd scripts to match your system and software locations.
Here is an example of a workflow you can use once you're setup for development.
Creating a New Plugin
- Use the Plugin Builder plugin to create a starting point [1]
- Start your pyqgis.cmd shell
- Use
pb_toolto compile and deploy the plugin (
pb_tool deploywill do it all in one pass)
- Activate it in QGIS and test it out
- Add code, deploy, test, repeat
Working with Existing Plugin Code
The steps are basically the same was creating a new plugin, except we start by
pb_tool to create a new config file:
- Start your pyqgis.cmd shell
- Change to the directory containing your plugin code
- Use
pb_tool createto create a config file
- Edit
pb_tool.cfgto adjust/add things
createmay have missed
- Start at step 3 in Creating a New Plugin and press on
Assuming you have things properly installed, trouble usually stems from an incorrect environment.
- Make sure QGIS runs and the Python console is available and working
- Check all the paths in your
pygis.cmdor your custom IDE cmd script
- Make sure your IDE is using the Python interpreter that comes with OSGeo4W
[1] Plugin Builder 2.6 will support generation of a pb_tool config file
QGIS Development with Plugin Builder and pb_tool
The Plugin Builder is a great tool for generating a working plugin project that you can customize.
One of the main tasks in the development cycle is deploying the plugin to the QGIS plugin directory for testing. Plugin Builder comes with a Makefile that can be used on Linux and OS X to aid in development. Depending on your configuration, the Makefile may work on Windows.
To help in managing development of your projects, we've come up with another option—a Python tool called pb_tool, which works anywhere QGIS runs.
Here's what it provides:
Usage: pb_tool [OPTIONS] COMMAND [ARGS]...
Simple Python tool to compile and deploy a QGIS plugin. For help on a
command use --help after the command: pb_tool deploy --help.
pb_tool requires a configuration file (default: pb_tool.cfg) that declares
the files and resources used in your plugin. Plugin Builder 2.6.0 creates
a config file when you generate a new plugin template.
See http://g-sherman.github.io/plugin_build_tool for for an example config
file. You can also use the create command to generate a best-guess config
file for an existing project, then tweak as needed.
--help Show this message and exit.
clean Remove compiled resource and ui files
clean_docs Remove the built HTML help files from the...
compile Compile the resource and ui files
create Create a config file based on source files in...
dclean Remove the deployed plugin from the...
deploy Deploy the plugin to QGIS plugin directory...
doc Build HTML version of the help files using...
list List the contents of the configuration file
translate Build translations using lrelease.
validate Check the pb_tool.cfg file for mandatory...
version Return the version of pb_tool and exit
zip Package the plugin into a zip file suitable...
In the command summary, a description ending in … means there is more to see using the help switch:
1 2 3 4 5 6 7 8 9
The Configuration File
pb_tool relies on a configuration file to do its work. Here's a sample pb_tool.cfg file:
# Configuration file for plugin builder tool
# Sane defaults for your plugin generated by the Plugin Builder are
# already set below.
# Name of the plugin. This is the name of the directory that will
# be created in .qgis2/python/plugins
name: TestPlugin
# Python files that should be deployed with the plugin
python_files: __init__.py test_plugin.py test_plugin_dialog.py
# The main dialog file that is loaded (not compiled)
main_dialog: test_plugin_dialog_base.ui
# Other ui files for dialogs you create (these will be compiled)
compiled_ui_files: foo.ui
# Resource file(s) that will be compiled
resource_files: resources.qrc
# Other files required for the plugin
extras: icon.png metadata.txt
# Other directories to be deployed with the plugin.
# These must be subdirectories under the plugin directory
# ISO code(s) for any locales (translations), separated by spaces.
# Corresponding .ts files must exist in the i18n directory
locales: af
# the built help directory that should be deployed with the plugin
dir: help/build/html
# the name of the directory to target in the deployed plugin
target: help
The configuration file is pretty much self-explanatory and represents that generated by Plugin Builder 2.6 for a new plugin. As you develop your code, you simply add the file names to the appropriate sections.
Plugin Builder 2.6 will be available the week of the QGIS 2.6 release. In the meantime, you can use
pb_tool createto create a config file. See the pb_tool website for more information.
Here's what a deployment looks like with pb_tool:
$ pb_tool deploy
Deploying will:
* Remove your currently deployed version
* Compile the ui and resource files
* Build the help docs
* Copy everything to your .qgis2/python/plugins directory
Proceed? [y/N]: y
Removing plugin from /Users/gsherman/.qgis2/python/plugins/TestPlugin
Deploying to /Users/gsherman/.qgis2/python/plugins/TestPlugin
Compiling to make sure install is clean
Skipping foo.ui (unchanged)
Compiled 0 UI files
Skipping resources.qrc (unchanged)
Compiled 0 resource files
Building the help documentation
sphinx-build -b html -d build/doctrees source build/html
Running Sphinx v1.2b1
loading pickled environment... done
building [html]: targets for 0 source files that are out of date
updating environment: 0 added, 0 changed, 0 removed
looking for now-outdated files... none found
no targets are out of date.
Build finished. The HTML pages are in build/html.
Copying __init__.py
Copying test_plugin.py
Copying test_plugin_dialog.py
Copying test_plugin_dialog_base.ui
Copying foo.py
Copying resources_rc.py
Copying icon.png
Copying metadata.txt
Copying help/build/html to /Users/gsherman/.qgis2/python/plugins/TestPlugin/help
Getting Started
For details on installing and using
pb_tool, see:
QGIS talks at FOSS4G 2014
Did you miss FOSS4G 2014? Don't despair: the talks have been recorded and are available on Vimeo. I suggest to start with the following video of Pirmin's talk wrapping up the developments since last year:
From Nottingham to PDX: QGIS 2014 roundup — Pirmin Kalberer, Sourcepole AG from FOSS4G on Vimeo.
Other talks include:
- GIS goes 3D : an OpenSource stack — Olivier Courtin
- Seven ways of injecting Python to QGIS — Jakob Lanstorp
- State of QGIS Server — Pirmin Kalberer
For the full list see https://vimeo.com/search/sort:plays/format:detail?q=qgis+foss4g
And of course – last but not least – watch Gary Sherman's Sol Katz Award acceptance speech if you haven't seen it yet. Congratulations Gary!
Gary Sherman's Sol Katz Award acceptance from Gateway Geomatics on Vimeo.
Creating custom colour schemes in PyQGIS
In my last post I explored some of the new colour related features available in QGIS 2.6. At the end of that post I hinted at the possibility of creating QGIS colour schemes using python. Let's take a look…
We'll start with something nice and easy – a colour scheme which contains a predefined set of colours (e.g., standard company colours). This is done by subclassing QgsColorScheme and implementing the required methods 'schemeName', 'fetchColors' and 'clone'. It's all fairly self explanatory – most of the important stuff happens in fetchColors, which returns a list of QColor/string pairs. Here's a sample:
from PyQt4.QtCore import * from PyQt4.QtGui import * class QgsCgaLightColorScheme(QgsColorScheme): def __init__(self, parent=None): QgsColorScheme.__init__(self) def schemeName(self): return "CGA Colors!" def fetchColors(self,context='', basecolor=QColor()): return [[QColor('#555555'),'Gray'], [QColor('#5555FF'),'Light Blue'], [QColor('#55FF55'),'Light Green'], [QColor('#55FFFF'),'Light Cyan'], [QColor('#FF5555'),'Light Red'], [QColor('#FF55FF'),'Light Magenta'], [QColor('#FFFF55'),'Yellow'], [QColor('#FFFFFF'),'White']] def flags(self): return QgsColorScheme.ShowInAllContexts def clone(self): return QgsCgaLightColorScheme() cgaScheme = QgsCgaLightColorScheme() QgsColorSchemeRegistry.instance().addColorScheme(cgaScheme)
This scheme will now appear in all colour buttons and colour picker dialogs:
If you only wanted the scheme to appear in the colour picker dialog, you'd modify the flags method to return QgsColorScheme.ShowInColorDialog instead.
QgsColorSchemes can also utilise a "base colour" when generating their colour list. Here's a sample colour scheme which generates slightly randomised variations on the base colour. The magic again happens in the fetchColors method, which copies the hue of the base colour and generates random saturation and value components for the returned colours.
from PyQt4.QtCore import * from PyQt4.QtGui import * import random class QgsRandomColorScheme(QgsColorScheme): def __init__(self, parent=None): QgsColorScheme.__init__(self) def schemeName(self): return "Random colors!" def fetchColors(self, context='', basecolor=QColor() ): noColors = random.randrange(30) minVal = 130; maxVal = 255; colorList = [] for i in range(noColors): if basecolor.isValid(): h = basecolor.hue() else: #generate random hue h = random.randrange(360); s = random.randrange(100,255) v = random.randrange(100,255) colorList.append( [ QColor.fromHsv( h, s, v), "random color! " + str(i) ] ) return colorList def flags(self): return QgsColorScheme.ShowInAllContexts def clone(self): return QgsRandomColorScheme() randomScheme = QgsRandomColorScheme() QgsColorSchemeRegistry.instance().addColorScheme(randomScheme)
Here's the random colour scheme in action… note how the colours are all based loosely around the current red base colour.
You may also have noticed the context argument for fetchColors. This can be used to tweak the returned colour list depending on the context of the colour picker. Possible values include 'composer', 'symbology', 'gui' or 'labelling'.
One final fun example… here's a colour scheme which grabs its colours using the Colour Lovers API to fetch a random popular palette from the site:
from PyQt4.QtCore import * from PyQt4.QtGui import * from xml.etree import ElementTree import urllib2 import random class colorLoversScheme(QgsColorScheme): def __init__(self, parent=None): QgsColorScheme.__init__(self) xmlurl = 'http://www.colourlovers.com/api/palettes/top' headers = { 'User-Agent' : 'Mozilla/5.0' } req = urllib2.Request(xmlurl, None, headers) doc = ElementTree.parse(urllib2.urlopen(req)).getroot() palettes = doc.findall('palette') palette = random.choice(palettes) title = palette.find('title').text username = palette.find('userName').text attrString = title + ' by ' + username colors = ['#'+c.text for c in palette.find('colors').findall('hex')] self.color_list = [[QColor(c), attrString] for c in colors] def schemeName(self): return "Color lovers popular palette" def fetchColors(self, context='', basecolor=QColor()): return self.color_list def flags(self): return QgsColorScheme.ShowInAllContexts def clone(self): return colorLoversScheme() loversScheme = colorLoversScheme() QgsColorSchemeRegistry.instance().addColorScheme( loversScheme )
Clicking a colour button will now give us some daily colour scheme inspiration…
Ok, now it's over to all you PyQGIS plugin developers – time to go wild!
What's new in QGIS 2.6 – Tons of colour improvements!
With one month left before the release of QGIS 2.6, it's time to dive into some of the new features it will bring… starting with colours.
Working with colours is a huge part of cartography. In QGIS 2.4 I made a few changes to improve interaction with colours. These included the ability to copy and paste colours by right clicking on a colour button, and dragging-and-dropping colours between buttons. However, this was just the beginning of the awesomeness awaiting colours in QGIS 2.6… so let's dive in!
Part 1 – New colour picker dialog
While sometimes it's best to stick with an operating system's native dialog boxes, colour pickers are one exception to this. That's because most native colours pickers are woefully inadequate, and are missing a bunch of features which make working with colours much easier. So, in QGIS 2.6, we've taken the step of rolling out our very own colour picker:
Before starting work on this, I conducted a review of a number of existing colour picker implementations to find out what works and what doesn't. Then, I shamelessly modelled this new dialog off the best bits of all of these! (GIMP users will find the new dialog especially familiar – that's no coincidence, it's a testament to how well crafted GIMP's colour picker is.)
The new QGIS colour picker features:
- Colour sliders and spin boxes for Hue, Saturation, Value, Red, Green and Blue colour components
- An opacity slider (no more guessing what level of transparency "189" corresponds to!)
- A text entry box which accepts hex colours, colour names and CSS rgb(#,#,#) type colours. (The drop down arrow you can see on this box in the screenshot above allows you to specify the display format for colours, with options like #RRGGBB and #RRGGBBAA)
- A grid of colour swatches for storing custom colours
- A visual preview of the new colour compared to the previous colour
- Support for dragging and dropping colours into and out of the dialog
- A colour wheel and triangle method for tweaking colours (by the way, all these colour widgets are reusable, so you can easily dump them into your PyQGIS plugins)
- A colour palettes tab. This tab supports adding and removing colours from a palette, creating new palettes and importing and exporting colours from a GPL palette file. (We'll explore colour palettes in more detail later in this post.)
- A colour sampler! This tab allows you to sample a colour from under the mouse pointer. Just click the "Sample color" button, and then click anywhere on the screen (or press the space bar if you're sampling outside of the QGIS window). You even get the choice of averaging the colour sample over a range of pixels. (Note that support for sampling is operating system dependant, and currently it is not available under OSX.)
Part 2 – New colour button menus
Just like the new colour dialog is heavily based off other colour dialog implementations, this new feature is inspired by Microsoft's excellent colour buttons in their recent Office versions (I make no claim to originality here!). Now, all QGIS colour buttons come with a handy drop down menu which allows you to quickly choose from some frequently used colour shortcuts. You've got the previously available options of copying and pasting colours from 2.4, plus handy swatches for recently used colours and for other standard colours.
Part 3 – Colour palettes
You may have noticed in the above screenshot the "Standard colors" swatches, and wondered what these were all about. Well, QGIS 2.6 has extensive support for color palettes. There's a few different "built-in" color palettes:
- The "Standard colors" palette. This palette can be modified through the Options → Colors tab. You can add, remove, edit, and rename colours, as well as import color schemes from a GPL palette file. These standard colours apply to your QGIS installation, so they'll be available regardless of what project you're currently working on.
- The "Project colors" palette. This can be accessed via the Project Properties → Default styles tab. This palette is saved inside the .qgs project file, so it's handy for setting up a project-specific colour scheme.
- The "Recent colors" palette. This simply shows colours you've recently used within QGIS.
You can easily create new colour palettes directly from the colour picker dialog. Behind the scenes, these palettes are saved into your .qgis/palettes folder as standard GPL palette files, which makes it nice and easy to modify them in other apps or transfer them between installations. It's also possible to just dump a stack of quality palettes directly into this folder and they'll be available from within QGIS.
Perhaps the best bit about colour schemes in QGIS is that they can be created using PyQGIS plugins, which opens up tons of creative possibilities… More on this in a future blog post!
So there we go. Tons of improvements for working with colours are heading your way in QGIS 2.6, which is due out on the 24th October.
(Before we end, let's take a quick look at what the competition offers over in MapInfo land. Yeah… no thanks. You might want to invest some development time there Pitney Bowes!)
QGIS training (3 days) and Birdwatching/Field data collection (2 days) in South Portugal, January 2015
Faunalia and Imagine-Science are pleased to announce a QGIS training (3 days) course during a week that will include 2 days of field activities related to birdwatching and field data collection. Where: Portugal/Algarve, specifically "Ria de Alvor -Mexilhoeira Grande" near Portimão. When: 26 to 30 January 2015. For more informations about QGIS training program, […]
QGIS atlas on non geometry tables
This is proof that no matter how close you are to a project you can still miss some really cool stuff that you never knew or considered was possible.
The problem to solve:
You have a CSV with a row of colours. Each row should be a new map and each column is the colour for that feature.
This is example of that kind of input
#93b2f3 #FF0000
#dfbdbb #FF0000
#f9d230 #FF0000
This questhion was asked on GIS.SE this morning. When I first saw it I had no idea it was even possible, I was thinking along the same lines as the person asking, that it would have to be done with Python. Not hard, but a lot harder then something built in and I put it in the too hard basket. I thought the atlas can almost do that, almost but not really.
Well almost was wrong. It can.
Note: You will need QGIS 2.5 (2.6 when released) for this to work
Lets make some cool maps! (and go to GIS.SE and upvote Nyalls answer)
First open your vector layer and the CSV. Don't worry about style just yet, we will do it later.
Create a composer and add your map.
Here comes the first part of the trick.
Enable Atlas and set the coverage layer to the CSV layer. Wait? What? That doesn't make any sense. If you think about it for a while it does. We need a map for each row (or "feature") in the CSV and atlas does just that.
How do we style the features? Well here is the other part of the trick. In 2.6 there is a magic expression function that returns a field value from another feature. And it's as simple as
attribute( $atlasfeature , 'A' ) - give me the attribute from the current atlas feature for field 'A'. Simple.
First we categorize our features so we have a symbol for each feature. I'm using a sample layer I have but you can understand how this works. The first feature is A and the other is B, etc, etc
Now to use another awesome feature of QGIS. The data defined symbol properties (and labels too). Change each symbol and define the colour data defined property. Using
attribute( $atlasfeature , 'A' ) for the first one and
attribute( $atlasfeature , 'B' ) for the second.
That is it. Now jump back over to your composer and enable Atlas preview.
Bam! Magic! How awesome is that!
Now my other thought was. "Ok cool, but the legend won't update". I should learn by now not to assume anything. The legend will also update based on the colours from the feature.
How far can we take this. What if you need the label to match the colour. Simple just make the label text look like this:
<h1 style='color:[% "A" %]'>This is the colour of A</h1>
Heaps of credit to Nyall and the others who have added all this great stuff to the composer, atlas, and the data defined properties. It's not something that you will do every day but it's great to see the flexibility of QGIS in these situations.
You can even make the background colour of the page match the atlas feature
but don't do that because people might think you are mad ;)
Labels as text in SVG exports
Today's post is inspired by a recent thread on the QGIS user mailing list titled "exporting text to Illustrator?". The issue was that with the introduction of the new labeling system, all labels were exported as paths when creating an SVG. Unnoticed by almost everyone (and huge thanks to Alex Mandel for pointing out!) an option has been added to 2.4 by Larry Shaffer which allows exporting labels as texts again.
To export labels as text, open the Automatic Placement Settings (button in the upper right corner of the label dialog) and uncheck the Draw text as outlines option.
Note that we are also cautioned that
For now the developers recommend you only toggle this option right
before exporting and that you recheck it after.
Alex even recorded a video showcasing the functionality:
Registration is open
Registration is open now for the Scottish QGIS user group. You can register here:
The planned agenda for the day is as follows:
- arrive for coffee 9.00
- welcome and intro 9.30
- workshops 10.00 – 12.00
- lightning talks 12.00 – 12.30
- lunch 12.30 – 13.30
- afternoon presentations 13.30 – 16.00
- close
- geobeers
There is a great line up of talks and after feedback from the last user group there are now two workshops in the morning for you to choose from.
- Workshop 1: QGIS plugin development with Python
- Workshop 2: Using the QGIS Processing module
- Michael Spencer – Raster time series analysis using FOSS4G
- Heikki Versanto – Visualising population demographics in 3D
- Simon Willcocks – Using PgRouting with OS ITN in QGIS
- Ross McDonald – Cartographic experiments in QGIS
- Mag Low – Rendering OS MasterMap buildings using QGIS2threeJS
- Paul Weedon – PostGIS, QGIS and Associated Street Data
- Lightning talks – a few minutes to tell us about, well, anything really.
Thanks to EDINA, thinkWhere and Ordnance Survey for helping to make the day happen!
Exporting QGIS symbols as images
Ever wanted to export your QGIS symbols as images? Yes. Well here is some Python code that will let you do just that:
from PyQt4.QtCore import QSize
from PyQt4.QtGui import QImage, QPainter
style = QgsStyleV2.defaultStyle()
names = style.symbolNames()
size = QSize(64, 64)
for name in names:
symbol = style.symbol(name)
if not symbol.type() == QgsSymbolV2.Marker:
image = QImage(size, QImage.Format_ARGB32_Premultiplied)
painter = QPainter(image)
symbol.drawPreviewIcon(painter, size)
image.save(r"C:\temp\{}.png".format(name), "PNG")
Or in 2.6 it's even easier:
from PyQt4.QtCore import QSize
from PyQt4.QtGui import QImage, QPainter
style = QgsStyleV2.defaultStyle()
names = style.symbolNames()
size = QSize(64, 64)
for name in names:
symbol = style.symbol(name)
if not symbol.type() == QgsSymbolV2.Marker:
image = symbol.asImage(size)
image.save(r"C:\temp\{}.png".format(name), "PNG")
Why? Because we can.
QGIS OpenLayers alternative: ArcGIS online basemap
The QGIS Ireland user group posted a method of adding the ArcGIS Online global raster basemap to QGIS to use as an alternative to the openLayers plugin:
Gary Sherman wins the Sol Katz award
This year Gary Sherman won the annual Sol Katz award. To quote the OSGEO page about the award:
The Sol Katz Award for Geospatial Free and Open Source Software (GFOSS) is awarded annually by OSGeo to individuals who have demonstrated leadership in the GFOSS community. Recipients of the award will have contributed significantly through their activities to advance open source ideals in the geospatial realm. The hope is that the award will both acknowledge the work of community members, and pay tribute to one of its founders, for years to come.
A couple of years ago I did an interview with Gary about the beginning of QGIS:
and part2:
I am so pleased that the Sol Katz award committee has seen fit to present this award to Gary. The fact that Gary created QGIS and open sourced its code has had a profound effect on many people's lives – especially my own. Participating in QGIS for the last decade+ has immeasurably improved my own life and enabled me to eke out a comfortable living doing something I love. Hardly a day goes without me receiving an email in my inbox from someone in a far flung place telling me how they are using QGIS and how it is making their world a better place.
Presenting this award to Gary is a long overdue recognition and 'thank you' to the person who started a project that has become the rally point for an incredible, diverse and friendly bunch of people, and a daily use tool for hundreds of thousands of users how there who may not even know who Gary is. QGIS rocks Gary, and so do you!
Here is Gary's acceptance speech:
Slides FOSS4G 2014
Slides from our presentations at FOSS4G 2014 in Portland/Oregon:
Selective data removal in an elevation map by means of floodfilling
Do you also sometimes get maps which contain zero (0) rather than NULL (no data) in some parts of the map? This can be easily solved with "floodfilling", even in a GIS.
My original map looks like this (here, Trentino elevation model):
Now what? In a paint software we would simply use bucket fill but what about GIS data? Well, we can do something similar using "clumping". It requires a bit of computational time but works perfectly, even for large DEMs, e.g., all Italy at 20m resolution. Using the open source software GRASS GIS 7, we can compute all "clumps" (that are many for a floating point DEM!):
# first we set the computational region to the raster map: g.region rast=pat_DTM_2008_derived_2m -p r.clump pat_DTM_2008_derived_2m out=pat_DTM_2008_derived_2m_clump
The resulting clump map produced by r.clump is nicely colorized:
As we can see, the area of interest (province) is now surrounded by three clumps. With a simple map algebra statement (r.mapcalc or GUI calculator) we can create a MASK by assigning these outer boundary clumps to NULL and the other "good" clumps to 1:
r.mapcalc "no_data_mask = if(pat_DTM_2008_derived_2m_clump == 264485050 || \ pat_DTM_2008_derived_2m_clump == 197926480 || \ pat_DTM_2008_derived_2m_clump == 3, null(), 1)"
This mask map looks like this:
We now activate this MASK and generate a copy of the original map into a new map name by using map algebra again (this just keeps the data matched by the MASK). Eventually we remove the MASK and verify the result:
# apply the mask r.mask no_data_mask # generate a copy of the DEM, filter on the fly r.mapcalc "pat_DTM_2008_derived_2m_fixed = pat_DTM_2008_derived_2m" # assign a nice color table r.colors pat_DTM_2008_derived_2m_fixed color=srtmplus # remove the MASK r.mask -r
And the final DEM is now properly cleaned up in terms of NULL values (no data):
The post Selective data removal in an elevation map by means of floodfilling appeared first on GFOSS Blog | GRASS GIS Courses.
Share and manage your Data with QGIS Cloud and WFS-T
A lot of people are using QGIS Cloud as a service with ready to use QGIS webclient. It's very easy to publish data and share maps in this way. But QGIS Cloud has more power under the hood. A not so obvious feature of QGIS Cloud is the option to share your data via Web Feature Service (WFS) and manage them via Web Feature Service Transactional (WFS-T). "The basic Web Feature Service allows querying and retrieval of features. A transactional Web Feature Service (WFS-T) allows creation, deletion, and updating of features" (Wikipedia). With WFS-T you have full access to your vector data for editing over the web. Since QGIS Server includes WFS-T functionality, you can manage and edit your data served by QGIS Cloud from every client supporting WFS-T. In addition, with QGIS Cloud Pro you have the option to control access to your published WFS.
How to setup a QGIS Cloud WFS-T in few steps:
Setup a QGIS Project containing the data you like to pubish as WFS-T
Load local vector data of your choice to your project.
- Define vector layers you wish to publish and set the appropriate settings for them in the following way:
- open the Project Properties -> OWS Server tab.
- scroll to the WFS-Capabilities section and setup the appropriate settings. Tick Published, Update, Insert and Delete for every layer you want to publish.
- additionally you can set the published fields of every layer in the Layer Properties -> Fields tab.
- Publish the project on QGIS Cloud.
- save the project. (If you don't have installed the QGIS Cloud plugin, than install it from the official QGIS Plugin Repository)
- open the QGIS Cloud plugin and log in your QGIS Cloud account. (If you don't have a QGIS Cloud account, sign up a new account).
- upload the local data to your QGIS Cloud database (if you don't have a QGIS Cloud database, create one from the QGIS Cloud plugin).
- publish the project via QGIS Cloud plugin.
- that's it!
Have a look at the Services tab of the QGIS Cloud Plugin. There you will find the URL for Public WMS. Your just created WFS has the same URL. Now you can start working with WFS and WFS-T.
Working with WFS-T in QGIS Desktop
You can access your WFS-T with QGIS or any other client which supports WFS and WFS-T. As an example here we show how to access WFS with QGIS Desktop:
- Open the QGIS WFS Server connections dialog (Layer -> Add WFS Layer … ).
- Add a new connection
- Give the connection a name of your choice and add the above created URL
- Click connect and you will see the just published WFS layers
- Add one or more of them to your project
Thus you have set the Update, Insert and Delete options for the WFS, these layers can be edited in QGIS like any other editable layer.
All the services published under QGIS Cloud Free are public and accessible by everyone. If you need resctricted access , you can order the QGIS Cloud Pro plan.
Follow @QGISCloud on Twitter for QGISCloud related news and infos.
Sourcepole at FOSS4G 2014 in Portland
In one week, the 2014 FOSS4G Conference will start in Portland/Oregon. Sourcepole supports this major event as a bronze sponsor.
Our conference contributions:
Workshop presented by Horst Düster (@moazagotl)
- Tuesday afternoon: QGIS Plugin Development with PyQt4 and PyQGIS
Presentations by Pirmin Kalberer (@PirminKalberer)
- Thursday, Session 2, Track 7, 13:00 - 13:25: State of QGIS Server
- Thursday, Session 2, Track 7, 13:30 - 13:55: From Nottingham to PDX: QGIS 2014 roundup
- Thursday, Session 3, Track 6, 16:25 - 13:25: Easy ETL with OGR
Meet Pirmin and Horst at Sourcepole's exhibition booth and have a look at our latest products.
We're looking forward to meet you in Portland next week!
Follow @Sourcepole for selected QGIS news and other Open Source Geospatial related infos.


text:
H. W. Crocker III, a longtime student of Robert E. Lee, is the executive editor of Regnery Publishing, Inc., consulting editor for Eagle Book Clubs, and former speechwriter for the governor of California. He serves on the board of the Southern Military Institute, writes a column on Civil War books for Southern Partisan magazine, and has written on military history for National Review, American Spectator, and other publications. He lives in northern Virginia.From the Hardcover edition.
Given the updated release of Steve Mariotti's classic The Young Entrepreneur's Guide to Starting and Running a Business on Tuesday, we decided...... READ MORE
Written by Doris Kearns Goodwin
Jason Millman Reporter, POLITICO Pro
Written by Ben Md Carson and Candy Carson
Written by Henry Kissinger
Written by Dinesh D'Souza
Written by Charles Krauthammer
Written by Ronald Kessler
Written by Edward Klein
Written by Tony Zinni
Written by Jimmy Carter
Written by Paul Ryan
Written by Aneesh Chopra


text:
TRANSLATED BY @tacogrill5
Kim Kibum's first impressions of S'pore (clean, peaceful and quiet) were formed during his journey from the airport to the hotel!
Kibum felt that it's less hectic filming in China, which gave him more time to figure out how he wanted to develop his character.
Kibum wants to try his hand at playing an evil character, specifically one that believes in & justifies his own evil actions. #KibuminSG
Kibum hopes to have a meaningful session with his fans and communicate and learn more about them at the fanmeet tomorrow!
Kibum being very generous in dishing out his "killer smile" he's famous for! #KibumInSG
CREDITS: dinoseoul.com
Kim Kibum first impression of SG: quiet, peaceful and clean country! :)
Kim Kibum said he's nervous for the fan meeting tomorrow but he wants to meet the fans quickly! XD #kimkibuminsg
Kim Kibum hopes to spend time with his mother and communicate more with the fans as his end-of-year wish! Aww :) #kimkibuminsg
Kim Kibum said the main purpose of tomorrow fan meeting is to spend time with the fans and have fun with them! ^^ #kimkibuminsg
Kim Kibum said to him, memory of love means moments with the fans or filming a drama with the director and staffs! #kimkibuminsg
As known for killer smile, Kim Kibum laughed and said "everyone, thank you~" #kimkibuminsg
Kim Kibum said he wants to try playing the evil character! #kimkibuminsg
Kim Kibum said he have interest in filming modern chinese dramas too! #kimkibuminsg
As chinese dramas have to film before broadcast unlike korean dramas, Kim Kibum felt more relaxing & there's ample time for it! kimkibuminsg
Kim Kibum said that the major differences in filming korean and chinese dramas: timing! #kimkibuminsg
CREDITS: @KAvenyou
[CrKorea Star Daily]
Translated by: @Joanna89508314
Kibum wants to work w/ HK director, Wong Kar Wai. He also says he wants to be a director someday
Abt his birthday: He doesn't have the habit to throw a party on his birthday. He says, "Though it's my birthday, but to my mom, maybe it wasn't a very happy memory, so I won't celebrate it recklessly, (I prefer) go on a vacation with mom."
"I wanted to return to being a 14 year old and make the audience remember the passionate young love."
Kim kibum played the lead role of TVN's monday/tuesday drama, I Love Lee Taeri. His character wished a weird wish and ended up becoming a 25 year old from a 14 years old. He played as the counter part for ice princess Park Yaejin who didnt trust in love after being betrayed by her first love.
After spending 3 months as Geum Undong, he seems to be still caught in the character.
"After finishing it, i took a break for about 4 days. I had special affection for UnDong character so the after-effect was strong. I'm trying to adjust back to my own life."
I love Lee Taeri is a special work for him. He finished it well, dispite it being his first time as lead role. He was also able to escape the image he had before.
"As we recorded, i wondered 'Am i leading the drama well?' I was pressured from being the lead role. But i had faith in Park Yaejin sunbaenim so i wasnt stressed too much. I depended on her a lot."
"I've been doing 'Good Boy' characters before this so i wanted to escape from that. I really wanted to try a comical acting and ruin my image. Guem Undong role came to me in a comfortable way so i was able to act comfortably and the viewers liked that."
Kibum showed a cute romantic scenes with Park yaejin during the drama. The age difference between the two in real life is 6 years. But their acting was very natural, almost like any Older/Younger couples.
"When i first heard about acting with her, I thought 'Will we match..?' but when we acted and saw ourselves on TV, i never thought that it was awkward. We worked well together."
Another part loved by the viewers was the perfect combination of kim Kibum and Jang SuhWon. The two appeared as a student / teacher relationship and showed great charms.
"Jang SuhWon hyung and I studied our characters together 2 months before recording. There were many scenes with us together so we wanted to practice it earlier to make it funny. Sometimes we conversed only with the lines from the script. (Laugh) I'm glad the scenes were portrayed well."
I Love Lee Taeri used Time Slip. Many dramas are also using the subject. What does it mean for Kibum?
"I read a manhwa on timeslip about 5 years ago. I kept thinking that it would be funny to see as a drama. The topic was funny. 'I love Lee Taeri' came as a refreshing subject like that."
Kim Kibum wanted to show a message to the people with the character Geum Undong who suddenly becomes an adult.
"I wanted to show them what the current social world looks to innocent childrens eyes. I wanted to portray the uneasyness a 14 year old with an adult body would feel. I wanted to express it a bit different way. And average people have their first love around then. I wanted to bring back that memory for all the viewers with UnDong's first love."
Kibum chose a best scene out of the drama. The scene chosen was the scene where Undong transformed to an adult body while swimming. Why did he choose that scene?
"With that scene, the drama's story starts. After reading the first script, i really anticipated for the story line. I prepared hard for it. I wanted to show a more perfect scene. I worked out hard to look pretty. I think that's why i'm attatched to that scene."
"Before recording, i tried to learn what 14 years old's think like. I watched lots of animations and met many kids. I tried to look for kids who were similar to the character Guem Undong. Since Undong is a swimmer, i studied Park TaeHwan too. (Laugh)."
Kibum was seriously thinking and worrying about his acting. His continuous studying and thinking makes us anticipate for his future works.
"There are many characters i want to try. I want to try a different type of character. I want to show a completely different character the next time. I think it's really fun acting roles that are different from your real personality."
Credits: Source:Herald News
Translated by: Naya @Nksubs


text:
Key things you need to know aboutDr. Dasari Devineni:
Dr. Dasari Devineni's Experience
Research training, expertise and qualifications
Dr. Dasari Devineni's Specialties
- Pediatrics
- View all 2 specialties
Conditions Dr. Dasari Devineni Treats
- Diabetes
- Obesity
- See all 5 conditions
More About Dr. Dasari Devineni's Background
Hospital Quality
The right hospital is as important as the right doctor
- Children's Healthcare of Atlanta at Scottish Rite
- 1001 Johnson Ferry Road North East
- Atlanta, GA 30342
9 Facts About Hospital Quality
Patients' risk of dying during a hospital stay for heart bypass surgery could be 85.2% lower, on average, at a hospital rated 5 stars compared to a hospital rated 1 star for that procedure. Choosing the right hospital is critical to your health. View Slideshow
Patient Satisfaction
Patients' feedback on their experience with Dr. Dasari Devineni
Likelihood of recommending Dr. Dasari Devineni to family and friends is 2.6 out of 5 5 1 8
See More Survey Results
8 Facts About Patient Satisfaction Surveys
Patient satisfaction surveys provide a standardized way of reporting about healthcare experiences. But there can be more than meets the eye when reviewing scores. Here's what you should know
Appointments & Offices
Check insurance plans, locations and make an appointment
Accepting new patients?
- Yes
- 1100 Lake Hearn Dr NE Suite 350
- Atlanta, GA 30342
- 240 Glen Lake Dr NW
- Atlanta, GA 30327
7 Tips to Prepare for Your Appointment
The key to a successful appointment is communication. To get the most out of your visit, prepare ahead of time so you can lead the conversation with your doctor. These 7 tips will get you ready
Children's Health Essentials
Oops, you entered a bad link for Dr. Dasari Devineni!
The link you entered contains bad characters or identifiers. Please enter the link exactly as it appears in your email or text message.
Thank you for confirming your survey about Dr. Dasari Devineni!
Your insights will help other patients make informed decisions. Please note: it will take 24 hours for your survey results to show up on the doctor's profile.
Thank you for confirming your survey about Dr. Dasari Devineni!
Our records show that you have already confirmed your survey for Dr. Dasari Devineni. Please note: it takes 24 hours for your survey results to show up on the doctor's profile.


text:
Saturday, November 3, 2012
The Next Step
Posted by Goat Song at 5:03 PM
Labels: farming, life, photography, pigs
6 comments:
- nancy said...
I know people who give them lots of raw milk to fatten them up :)
- November 3, 2012 at 5:43 PM
Is this supposed to be a hint?
- November 3, 2012 at 7:24 PM
- Tayet @ Farm Life at its Best said...
I have never really liked pigs, but I do like eating them!
- November 3, 2012 at 9:25 PM
- Goat Song said...
@ Dad: *Cough, cough*.
- November 3, 2012 at 9:29 PM
- Karen Rickers said...
I would like a couple of pigs someday, too. Although my mother has told me that my grandfather, who farmed in Grey/Bruce County here in Ontario, admitted fear at only one animal on his acreage: the boar! So perhaps I'll stick to cute little piglets that I can fatten with nutritious swill, and allow to cavort in the sun before sending them on their final trip to Disneyland. No boars allowed!
- November 4, 2012 at 6:57 AM
- Kelly said...
Me too!
- November 6, 2012 at 10:56 PM
Subscribe to: Post Comments (Atom)


text:
Ready to break out of jail in style? Looking for a scintillating piece to supplement your scandalous ensemble this Halloween? Then this Convicted Cutie Convict Costume is just what you want!
This unlawfully alluring attire features short, black lace and pink trim dress with black and white stripes and a pink bow, a black and white striped cap, a pink choker, and a black ball and chain purse to bring out the illicit offender in you this Halloween! Every man will want to bail you out when he sees you in this exciting number!
With this Convicted Cutie Convict Costume, you'll have the perfect finishing touch for that luscious lawbreaker outfit this Halloween season!
Available in Sizes:
XS, Small, Medium and Large
Item Includes:
Dress, Choker, Hat and Purse
Pictured items not included:
Stockings and Shoes
100 % Polyester Exclusive of Trim
Care Instructions:
Hand Wash in Cold Water w/ Mild Detergent or Shampoo - AIR DRY
Your rating was successfully saved, and is pending approval. Thank you!
Your rating was successfully deleted.
1 Review
Overall Rating:
Reviewer: Rafa (this user has purchased this item)
June 3, 2011
Quality: 2
Cool Factor: 8
Costume Purchasing Experience: 5+
Your Age: 18-25
I don`t like this costume. The quality isn`t very well.
Size Chart For:
Convict Costume - Convicted Cutie


text:
Thomas Krämer
I bring crowdsourcing in urban and regional planning
Thomas Krämer, 34, is a co-founder of ontopica GmbH, Bonn, Germany. After his Master in Sociology and Computing in the Humanities he specialised on e-participation systems at Fraunhofer Institute for Intelligent Analysis and Information Systems IAIS. In recent years he focussed on the organisational aspects of socio-technical systems and on spreading crowdsourcing in urban and regional planning practise.
Thomas is speaking at PICNIC Festival 2012
About the real Thomas
KÖLn, Germany
Thomas has 6 club points
Thomas has 1 badge
Thomas's posts
Thomas hasn't posted anything yet


text:
skip to main
skip to sidebar
the mitchell family
mike, leanne, and kellan
No posts.
No posts.
Subscribe to:
Posts (Atom)
Blogs I'm Following
The Dibb Family
Family Home Pictures
5 days ago
Marketing + Branding + Design
Customer-centricity and the power of thank you
2 months ago
The Dadabase
Thanks And Goodbye From The Dadabase: The Series Finale
4 months ago
Katie, Being Candid
I've been quiet here, but I've been busy!
3 years ago
Bloggerized by
Blog Templates
created by
Web Hosting


text:
Please confirm that your email address is correct, so you can successfully receive this alert.
Massachusetts Society for Mental Hygiene, 5 Joy Street, Boston
1. Mental hygiene believes it possesses a commodity, the sale and use of which will help in lightening some of the social, health, and economic burdens of every community.2. The educational portion of a mental hygiene program must be looked on in terms of a commercial problem.3. Before this commodity can secure public acceptance, a vigorous campaign of education and interpretation must be undertaken. The idea of mental health must be thoroughly sold before its principles can be practically applied through clinical measures.4. In the process of "selling" mental hygiene to the lay public a disregard for the necessity of getting down to the level of understanding of the average citizen will retard progress. It has been found that even when addressing such professional groups as general physicians, nurses, and college graduates, one must not take for granted any degree of previous knowledge of the subject. This may sound dogmatic but a not inextensive experience in such work confirms this view.5. Not only is education a prerequisite for "selling" mental health, but a proper interpretation of the principles involved must go hand in hand with enlightenment.6. The best equipped mental clinic available cannot function to capacity until a clientele is established and until the public knows what it is for, what kinds of cases it treats, and why they should not stigmatize or be suspicious of its purpose. This preparatory work can only be accomplished through an intensive educational campaign, preferably by a neutral, private, and unbiased agency.7. Methods of education include use of:(a) Lectures.(b) Instruction courses.(c) Literature.(d) Exhibits.(e) Legislation.
Subscribe Now/Learn More
Purchase Online access to this article for 24 hours
PsychiatryOnline subscription options offer access to the
DSM-5 library, books,
journals, CME, and patient resources. This all-in-one virtual library provides psychiatrists
and mental health professionals with key resources for diagnosis, treatment, research,
and professional development.
Need more help? PsychiatryOnline Customer Service may be reached by emailing email@example.com
or by calling 800-368-5777 (in the U.S.) or 703-907-7322 (outside the U.S.).


text:
Cyndi75 Wrote:
Jun 22, 2012 11:17 AM
You've got to be kidding me - have you read Romney's views on immigration? America is doomed if we vote for anyone other than Romney, or if we don't vote at all. Obama will mean four years of "having more flexibility". Which means he'll nominate activist Supreme Court justices that will destroy our Constitution and will be in place for another 20 or 30 years. Which means he'll likely cut deals with the Russians. Which means our deficit will spiral so out of control our children and grandchildren will be in bondage from debt. Which means defense of marriage goes out the window, gay marriage will be upheld, and Obamacare will have such a grip on our nation - we won't be able to get out of it.


text:
Loading ...
Steve Price spent his 20-year Air Force career training dogs for scent detection. Now as the founder of Scent Detection International, he has trained more than 60 dogs that have been put to work across the globe. His five-day training program takes canines across 2 acres. That's where he teaches them to detect scents including mold, drugs, explosives, and pirated videos. Steve also conducts drug inspections in homes and businesses that rout out illegal substances, helping clients detect if their loved ones are using illicit drugs.
The veterinarians and veterinary technicians of Seven Oaks Pet Hospital coddle cats, dogs, and rabbits and other small mammals under the close supervision of Dunkin, the clinic's resident kitty. In addition to regular wellness exams and vaccines, the pet hospital offers dental and surgical care, pain management, and microchipping so you'll know when your teenage bulldog breaks curfew. For furry friends that need a little extra TLC, they also offer holistic medicine and behavioral medicine.
Pawsh Pet Resort and Spa was designed from a pet's perspective to provide its furry visitants with homely comforts amid a safe, fun, and personalized environment. The facility is managed by Holly Kierski, whose credentials for the job include certifications in pet CPR, first aid, and as a bark-to-English translator. Holly heads a staff of professionals that supervise all of Pawsh's day-to-day activities, ranging from exercise-packed daycare services to upscale boarding options, some of which feature password-protected webcams so traveling owners can peek in on their canine or kitty. Meanwhile, on the spa side of Pawsh, professionally trained groomers spruce up shaggy styles, and outside the facility, Pawsh employees jet off to clients' houses for in-home sitting of more exotic pets, such as horses, birds, and freeloading cousins.
The seasoned technicians at Sams Gas efficiently refill 20-pound propane tanks, perfectly designed for gas grills. Whether customers own their own propane reservoirs or buy one from Sams, a technician will fill it to the brim with fresh-from-the-farm propane gas, lauded for being nontoxic and having minimal effect on the environment or the indigenous dryer-sheet trees that spring up in lint filters.
Most pet owners consider their furry friends to be full members of the family, with privileges that meet or exceed those of their human roommates. With that in mind, it's understandable that some people would reject the one-size-fits-all approach to veterinary medicine. Licensed vet Dr. Deanna DeVuyst certainly understands. That's why she started Home Healing Animal Clinic, LLC, a mobile practice that delivers holistic treatments to pets during old-fashioned house calls. Whether she's redirecting animal energy during acupuncture treatments or mixing up a traditional Chinese herbal remedy, Dr. DeVuyst keeps her patients comfortable and relaxed. In addition to dogs and cats, Dr. DeVuyst also heals horses with equine acupuncture treatments.
As a girl, Angela Bubley was always bringing home stray dogs and convincing her friends and family to do so, too. She had a true passion for pups, which she later transformed into a career by founding B. Paws-itive Pet Dog Training. The American Kennel Club-certified trainer and Hillsborough County-approved dog obedience instructor leads one-on-one sessions and group training classes that instill consistent, good behavior in dogs. Sessions can take place at clients' homes, in Angela's facility, or in a pile of cats for an added challenge.


text: Dragonsfire Guardian of the Tor XII (last weekend in April) welcomes merchants. If you are interested in merchanting please contact: Holly Olufs at 254-965-2203 Or Olufs at bluefox.TV A small donation is requested. Thank you Janie of Dragonsfire Tor _________________________________________________________________ MSN 8 with e-mail virus protection service: 2 months FREE* http://join.msn.com/?page=features/virus


text:
Edamame Beans
Edamame Beans
- Viewing All
Sayamusume BeanBN053
85 days. This variety is a consistent high yielder in Washington State University trials. It grows to 2 feet and the 3-3...
Early Hakucho BeanBN061
75 days. Edamame soybeans are one of our favorite delicacies here at Territorial. We're excited to offer Early Hakuc...Sold Out For 2014
Midori Giant Bean OrganicBN062
70 days. Extra-early maturing, these delicious edamame are especially suited for shorter season gardens. We found that m...
Viewing All


text:
Man taken to hospital after house fireBy Lucia Suarez
Staff Writer | March 04,2013CLARENDON — Firefighters from Clarendon, Ira and West Rutland responded to a fire in a single-family home on Schoolhouse Hill Road late Monday afternoon.
Clarendon Fire Chief Norm Flanders said information on the cause of the fire was limited but it is believed to have started in the basement of the home.
"Most of the fire was in the basement and the upstairs bedroom," Flanders said.
He said the home was probably not a total loss.
He said an elderly man was taken to Rutland Regional Medical Center, but he did not know for what exactly. He said he believed it was smoke inhalation but was unsure.
No names were released and his condition was not available.
A Rutland County Sheriff's Department deputy confirmed that resuscitation efforts were conducted on a man, but would not elaborate.
A fire investigator was called to determine the cause of the fire. No more information was available by press time.
According to Flanders, the West Rutland Fire Department was the first on the scene.
While at the scene, a Sheriff's Department cruiser was damaged when it was struck by a West Rutland fire truck.MORE IN This Just InBy JAMIE NORTON Full StoryBRANDON This unit needs a nickname. Full StoryWoman killed in Full Story
- Most Popular
- Most Emailed
- RICHARD'S POOR ALMANACK: V-2 No. 13, launched this day in 1946 from White Sands, New Mexico, takes first photographs of Earth from the edge of the planet's outer atmosphere; 1947: Walt Disney testifies before HUAC, names employees he says are communists.
- TOMORROW'S HEADLINES TODAY: Vermont's brand discussed at Killington, state's attorney candidates Marc Brierre and Rose Kennedy profiled, Curtis reports about Rutland police chief's new job, and four arrested, charged for heroin, crack sales.
- RICHARD'S POOR ALMANACK: On this day in 1935, New York gangster, bootlegger, ruthless murderer Dutch Schultz, born Arthur Flegenheimer to Jewish-German immigrant parents, and three associates gunned down, killed, at the Palace Chophouse in Newark, N.J.
- RICHARD'S POOR ALMANACK: Acclaimed illusionist & escape artist Harry Houdini, performing in Montreal in 1926, is sucker-punched by a McGill University student. Houdini doesn't know he has peritonitis - the punches are possible factor in his Oct. 31 death.
- TOMORROW'S HEADLINES TODAY: Rutland Police Chief James Baker to resign from the force at the end of the year to take a job in Washington, D.C., jury remains out in teacher killing murder trial, Rec Dept. releases report on what's wrong with White's Pool.
- RICHARD'S POOR ALMANACK: Well diggers in Cardiff, New York, find what is thought to be the petrified body of a 10-foot-tall man, perfectly preserved after thousands of years, which becomes a popular roadside attraction until proven to be a fake.


text:
Skip to content
and found 2 items
124cc, 14.7bhp, 55mph, Insurance group
Hybrid technology has finally reached motorcycles – the MP3 Hybrid has an electric motor that can assist the petrol engine or run as a standalone engine. But sadly it's not quite ready to provide a viable alternative yet – price is expected to be high and the electric assistance isn't good enough. Doubt has been cast over the green credentials ...
125cc, 15bhp, 65mph, Insurance group 6
A motorcycle with a roof that doubles as accident protection. Be the smartest commuter in the city or 'that twonk in the Noddy moped' depending on your perspective. The BMW C1's £4K price tag (it dropped by £600 when the 200cc version came out) was high for an overweight scooter – even if it did keep you dry. Few were ...
Save money by comparing quotes. It's quick and easy
With over 18,000 products, MCN shop is the best place to buy your biking kit
Motorcycle Cover | Cheap Motorcycle Insurance | Moped Insurance | Scooter Insurance | 125 Insurance | Work Experience | Complaints Policy
Car Magazine | Empire | FHM | Parkers | LRO | Today's Golfer | Zoo
Bauer Consumer Media Ltd (company number 01176085, 1 Lincoln Court, Lincoln Road, Peterborough, England PE1 2RF)