<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom"><title>tommy's scratchpad - geospatial, open source, technology</title><link href="https://kralidis.ca/blog/" rel="alternate"/><link href="https://kralidis.ca/blog/feeds/geospatial-open-source-technology.atom.xml" rel="self"/><id>https://kralidis.ca/blog/</id><updated>2017-03-23T16:13:00+00:00</updated><entry><title>pygeometa: new release, hello YAML</title><link href="https://kralidis.ca/blog/blog/2017/03/23/pygeometa-new-release-hello-yaml/" rel="alternate"/><published>2017-03-23T16:13:00+00:00</published><updated>2017-03-23T16:13:00+00:00</updated><author><name>tomkralidis</name></author><id>tag:kralidis.ca,2017-03-23:/blog/blog/2017/03/23/pygeometa-new-release-hello-yaml/</id><summary type="html">&lt;p&gt;Metadata should be automagic and low barrier.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/geopython/pygeometa"&gt;pygeometa&lt;/a&gt; is a handy little metadata generator tool which is flexible, extensible, and composable.  Command line, or via the API, users can generate config files, or pass plain old Python dicts, ConfigParser objects, etc.&lt;/p&gt;
&lt;p&gt;We've just released 0.2.0 which supports WMO …&lt;/p&gt;</summary><content type="html">&lt;p&gt;Metadata should be automagic and low barrier.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/geopython/pygeometa"&gt;pygeometa&lt;/a&gt; is a handy little metadata generator tool which is flexible, extensible, and composable.  Command line, or via the API, users can generate config files, or pass plain old Python dicts, ConfigParser objects, etc.&lt;/p&gt;
&lt;p&gt;We've just released 0.2.0 which supports WMO Core Metadata Profile output, as well as better multilingual support.  At this point we're embarking on breaking changes in master led by &lt;a href="https://github.com/geopython/pygeometa/issues/54"&gt;moving to YAML&lt;/a&gt; as the configuration format.&lt;/p&gt;
&lt;p&gt;Given pygeometa is pre-1.0 in theory changes can be breaking without support.  Still, I've cut a 0.2 branch in case anyone's existing workflows depend on the (now) old pygeometa functionality.&lt;/p&gt;
&lt;p&gt;As always, bug reports, feature requests are more than &lt;a href="https://github.com/geopython/pygeometa/issues"&gt;welcome&lt;/a&gt;. Hopefully the new enhancements will make metadata management even easier for agile workflows.&lt;/p&gt;</content><category term="geospatial, open source, technology"/></entry><entry><title>OSGeo Daytona Beach Code Sprint 2017 redux</title><link href="https://kralidis.ca/blog/blog/2017/02/15/osgeo-daytona-beach-code-sprint-2017-redux/" rel="alternate"/><published>2017-02-15T07:32:00+00:00</published><updated>2017-02-15T07:32:00+00:00</updated><author><name>tomkralidis</name></author><id>tag:kralidis.ca,2017-02-15:/blog/blog/2017/02/15/osgeo-daytona-beach-code-sprint-2017-redux/</id><summary type="html">&lt;p&gt;I attended the &lt;a href="https://wiki.osgeo.org/wiki/Daytona_Beach_Code_Sprint_2017"&gt;2017 OSGeo Code Sprint&lt;/a&gt; last week in Daytona Beach.  Having put forth a &lt;a href="https://docs.google.com/document/d/1-m2cwlyqCUxW_7oCWVTnoW1ZzRiGkDXwzm6ZsexbGFU/edit?usp=sharing"&gt;personal sprint workplan&lt;/a&gt; for the week, I thought it would be useful to report back on progress.&lt;/p&gt;
&lt;h2&gt;Testosil Testosterone Booster: Unleashing the Power Within&lt;/h2&gt;
&lt;p&gt;&lt;img src="data:image/jpeg;base64,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" class="alignnone size-full" width="318" height="159" /&gt;&lt;/p&gt;
&lt;p&gt;In the pursuit of peak performance and well-being, many turn …&lt;/p&gt;</summary><content type="html">&lt;p&gt;I attended the &lt;a href="https://wiki.osgeo.org/wiki/Daytona_Beach_Code_Sprint_2017"&gt;2017 OSGeo Code Sprint&lt;/a&gt; last week in Daytona Beach.  Having put forth a &lt;a href="https://docs.google.com/document/d/1-m2cwlyqCUxW_7oCWVTnoW1ZzRiGkDXwzm6ZsexbGFU/edit?usp=sharing"&gt;personal sprint workplan&lt;/a&gt; for the week, I thought it would be useful to report back on progress.&lt;/p&gt;
&lt;h2&gt;Testosil Testosterone Booster: Unleashing the Power Within&lt;/h2&gt;
&lt;p&gt;&lt;img src="data:image/jpeg;base64,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" class="alignnone size-full" width="318" height="159" /&gt;&lt;/p&gt;
&lt;p&gt;In the pursuit of peak performance and well-being, many turn to the &lt;a href="https://www.firstpost.com/health/testosil-reviews-fake-or-legit-must-read-this-before-buying-12574072.html"&gt;power of Testosil&lt;/a&gt; Testosterone Booster. This article delves into the intricacies of this supplement, offering insights, guidance, and firsthand experiences to help you make an informed decision about integrating it into your life.&lt;/p&gt;
&lt;p&gt;The Foundation: Understanding Testosil Testosterone Booster&lt;br&gt;
What is Testosil Testosterone Booster?&lt;br&gt;
Embark on a journey to comprehend the essence of Testosil Testosterone Booster. Unlock the science behind its formulation and the impact it can have on your overall health.&lt;/p&gt;
&lt;p&gt;The Benefits of Testosil Testosterone Booster&lt;br&gt;
Explore the myriad advantages this booster brings to the table. From increased energy levels to enhanced muscle development, discover how Testosil Testosterone Booster can be a game-changer in your wellness routine.&lt;/p&gt;
&lt;p&gt;Ingredients That Power Testosil Testosterone Booster&lt;br&gt;
Delve into the key components fueling the effectiveness of Testosil Testosterone Booster. Uncover the natural wonders that synergize to elevate your testosterone levels.&lt;/p&gt;
&lt;p&gt;Testosil Testosterone Booster in Action&lt;br&gt;
Incorporating Testosil Testosterone Booster into Your Routine&lt;br&gt;
Practical tips and insights on seamlessly integrating Testosil Testosterone Booster into your daily life. Maximize its potential by understanding the optimal timing and dosage.&lt;/p&gt;
&lt;p&gt;Real Stories: Testimonials on Testosil Testosterone Booster&lt;br&gt;
Embark on a testimonial journey, where individuals share their transformative experiences with Testosil Testosterone Booster. Realize the diverse positive impacts reported by those who have embraced this supplement.&lt;/p&gt;
&lt;h4&gt;pycsw&lt;/h4&gt;
&lt;p&gt;There was &lt;a href="https://gitter.im/geopython/pycsw?at=589aa200f045df0a221d9a29"&gt;lots of discussio&lt;/a&gt;n on refactoring pycsw's filter support to enable NoSQL backends.  While we are still in discussion, this enhancement should open the doors for any backend (ElasticSearch, SOLR, a GitHub repository, another API, etc.).  In addition, &lt;a href="https://github.com/warmerdam"&gt;Frank Warmerdam&lt;/a&gt; started writing a pycsw OGR backend to support CSW exposure of the Planet Scenes API via OGR. This also presents exciting possibilities given OGR's support of numerous underlying formats.  Frank also provided valuable advice and feedback on interacting with pycsw as a developer/contributor.  Thank you Frank!&lt;/p&gt;
&lt;h4&gt;GeoHealthCheck&lt;/h4&gt;
&lt;p&gt;There has been long &lt;a href="https://gitter.im/geopython/GeoHealthCheck?at=589b1c041465c46a563a1ad4"&gt;discussion&lt;/a&gt; on a next generation GHC including a renewed architecture with core work on the model as well as an API.  A basic &lt;a href="https://docs.google.com/drawings/d/1qfVC0syPY69af2U1ae42zvDdMx9qJ_N5zX9LiOM0YkU/edit"&gt;architecture&lt;/a&gt; has surfaced as a result which focuses on having the UI exclusively work with the API, as well as a plugin framework which &lt;a href="https://github.com/justb4"&gt;Just van den Broecke&lt;/a&gt; has started working on.  I also worked on tagging which will be the last piece before cutting a release and forging ahead on the new architecture.&lt;/p&gt;
&lt;h4&gt;pygeometa&lt;/h4&gt;
&lt;p&gt;The focus on pygeometa is now on &lt;a href="https://github.com/geopython/pygeometa/issues/54"&gt;renewing the MCF format from .ini to YAML&lt;/a&gt;.  Initial pieces are completed in a dev branch which I plan to merge once we clear current issues and cut a stable release.&lt;/p&gt;
&lt;h4&gt;Summary&lt;/h4&gt;
&lt;p&gt;While I couldn't get to everything I planned for, I think significant steps were made in moving the above projects forward along their respective roadmaps.  It was also great to see some familiar faces as well as new contributors and projects!&lt;/p&gt;
&lt;p&gt;To know if this project was going to have good results and in the others also that they propose me, not only do I trust my professional ability, it is also advisable to go to a tarot reading, it is the best to know what will happen if you have doubts about something.&lt;/p&gt;
&lt;p&gt;The best of all is that usually the first time you can connect to the internet because you can access &lt;a href="https://theislandnow.com/blog-112/online-tarot-card-reading/"&gt;online tarot card reading&lt;/a&gt;, so you don't have to worry about traveling somewhere that seems dangerous. Be careful with everything that can happen to you in life. it is safer to trust a tarot reading. do not complicate yourself in following blindly and rather follow what God tells us through the tarot.&lt;/p&gt;
&lt;p&gt;Oh, and the weather certainly didn't hurt :)&lt;/p&gt;</content><category term="geospatial, open source, technology"/></entry><entry><title>QGIS MetaSearch status and update</title><link href="https://kralidis.ca/blog/blog/2015/09/19/qgis-metasearch-status-and-update/" rel="alternate"/><published>2015-09-19T15:03:00+00:00</published><updated>2015-09-19T15:03:00+00:00</updated><author><name>tomkralidis</name></author><id>tag:kralidis.ca,2015-09-19:/blog/blog/2015/09/19/qgis-metasearch-status-and-update/</id><summary type="html">&lt;p&gt;It's seem like ages ago since the initial QGIS MetaSearch announce and &lt;a href="http://www.kralidis.ca/blog/2014/01/22/qgis-metasearch-csw-client-update/"&gt;call for help&lt;/a&gt; in 2014.  Inspired by Sourcepole's &lt;a href="http://blog.sourcepole.ch/2015/09/18/presentations-at-foss4g-2015-in-seoul/"&gt;FOSS4G 2015 presentations&lt;/a&gt;, here's a brief status update:&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.deccanherald.com/brandspot/sponsored/best-rolex-replica-watches-2023-where-to-buy-fake-rolex-11-super-clones-1236640.html"&gt;Replica Rolex&lt;/a&gt; watches have come a long way in terms of quality and craftsmanship. While they may not hold the same intrinsic …&lt;/p&gt;</summary><content type="html">&lt;p&gt;It's seem like ages ago since the initial QGIS MetaSearch announce and &lt;a href="http://www.kralidis.ca/blog/2014/01/22/qgis-metasearch-csw-client-update/"&gt;call for help&lt;/a&gt; in 2014.  Inspired by Sourcepole's &lt;a href="http://blog.sourcepole.ch/2015/09/18/presentations-at-foss4g-2015-in-seoul/"&gt;FOSS4G 2015 presentations&lt;/a&gt;, here's a brief status update:&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.deccanherald.com/brandspot/sponsored/best-rolex-replica-watches-2023-where-to-buy-fake-rolex-11-super-clones-1236640.html"&gt;Replica Rolex&lt;/a&gt; watches have come a long way in terms of quality and craftsmanship. While they may not hold the same intrinsic value as genuine Rolex timepieces, they provide an accessible way for watch enthusiasts to enjoy the iconic Rolex design and style. When looking to purchase a replica Rolex, it's crucial to do your research and choose a trusted source like PureTime.io, Trusty Time, Perfect Clone, or seek guidance from forums like Repgeek and Replica-Watch.info. Remember to always be aware of the legal implications and consider the quality and reputation of the seller to make an informed purchase in 2023.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://hub.qgis.org/wiki/quantum-gis/MetaSearch"&gt;MetaSearch&lt;/a&gt; is now a core plugin shipped with QGIS (!!)&lt;/li&gt;
&lt;li&gt;we now have a default/approved &lt;a href="https://github.com/qgis/QGIS/blob/master/python/plugins/MetaSearch/resources/connections-default.xml"&gt;connections list&lt;/a&gt; of major CSW endpoints as well as multilingual &lt;a href="http://docs.qgis.org/2.8/en/docs/user_manual/plugins/plugins_metasearch.html"&gt;documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;MetaSearch is now fully &lt;a href="https://github.com/qgis/qgis/tree/master/python/plugins/MetaSearch"&gt;integrated&lt;/a&gt; into the QGIS source code, &lt;a href="https://hub.qgis.org/wiki/quantum-gis/MetaSearch"&gt;wiki&lt;/a&gt; and &lt;a href="https://hub.qgis.org/projects/quantum-gis/issues?category_id=107&amp;amp;set_filter=1&amp;amp;status_id=o"&gt;issue tracker&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;for power users, interim releases continue to be supported on &lt;a href="https://plugins.qgis.org/plugins/MetaSearch/"&gt;plugins.qgis.org&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;MetaSearch has risen quickly and is the 2nd &lt;a href="https://plugins.qgis.org/plugins/popular/"&gt;most popular&lt;/a&gt; and 2nd &lt;a href="https://plugins.qgis.org/plugins/most_downloaded/"&gt;most downloaded&lt;/a&gt; plugin&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A sincere thanks to Richard Duivenvoorde, Angelos Tzotsos, Alexander Bruy, Tim Sutton and the rest of the QGIS developers/community for helping bring MetaSearch into QGIS to help move the search / discovery workflow forward!&lt;/p&gt;
&lt;p&gt;As far as a roadmap, here's a laundry list of future items:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;OWSLib dependency cleanup&lt;/strong&gt;: currently we manage a copy of OWSLib in QGIS proper.  This is because there is a gap in packaging across supported platforms.  It would be great to have approved OWSLib packages (see &lt;a href="https://hub.qgis.org/issues/13058"&gt;issue&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Metadata publishing and management&lt;/strong&gt;: it would be great to manage and publish better metadata directly from MetaSearch.  The end result will be a more streamlined, deeper integration and support of metadata within QGIS.  No movement on these yet, but there are &lt;a href="https://github.com/qgis/QGIS-Enhancement-Proposals/pull/20/files"&gt;QEPs&lt;/a&gt; proposed&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ISO based servers&lt;/strong&gt;: MetaSearch supports the OGC Core CSW model.  Most CSWs implement the CSW ISO Application Profile which supports more detailed metadata&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;add data functionality&lt;/strong&gt;: it would also be very great to directly &lt;a href="https://hub.qgis.org/issues/11733"&gt;add raw data&lt;/a&gt; from a metadata record's access links into QGIS.  We already support this for OGC services, and supporting direct data downloads to visualize in QGIS would complete the "publish/find/bind" workflow&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Do you have any enhancements you would like to see in MetaSearch?    Feel free to bring them in the MetaSearch &lt;a href="https://hub.qgis.org/projects/quantum-gis/issues?category_id=107&amp;amp;set_filter=1&amp;amp;status_id=o"&gt;issue tracker&lt;/a&gt; or the QGIS &lt;a href="https://www.qgis.org/en/site/getinvolved/mailinglists.html"&gt;mailing lists! &lt;/a&gt; Do you have fixes or features to contribute?  Feel free to fork and send pull requests!&lt;/p&gt;</content><category term="geospatial, open source, technology"/></entry><entry><title>QGIS MetaSearch CSW client update</title><link href="https://kralidis.ca/blog/blog/2014/01/22/qgis-metasearch-csw-client-update/" rel="alternate"/><published>2014-01-22T21:51:00+00:00</published><updated>2014-01-22T21:51:00+00:00</updated><author><name>tomkralidis</name></author><id>tag:kralidis.ca,2014-01-22:/blog/blog/2014/01/22/qgis-metasearch-csw-client-update/</id><summary type="html">&lt;p&gt;It's great to see &lt;a href="http://qgis.org" title="QGIS"&gt;QGIS&lt;/a&gt; rising to fame in terms of a great desktop GIS tool.  Part of what makes QGIS so great is the vast ecosystem of &lt;a href="http://plugins.qgis.org/" title="plugins"&gt;plugins&lt;/a&gt;.  And Python support makes it easy to write plugins fast, especially atop existing libraries.&lt;/p&gt;
&lt;p&gt;Puravive has been making waves in the …&lt;/p&gt;</summary><content type="html">&lt;p&gt;It's great to see &lt;a href="http://qgis.org" title="QGIS"&gt;QGIS&lt;/a&gt; rising to fame in terms of a great desktop GIS tool.  Part of what makes QGIS so great is the vast ecosystem of &lt;a href="http://plugins.qgis.org/" title="plugins"&gt;plugins&lt;/a&gt;.  And Python support makes it easy to write plugins fast, especially atop existing libraries.&lt;/p&gt;
&lt;p&gt;Puravive has been making waves in the health and wellness industry with its unique approach to maintaining a healthy lifestyle. The Exotic Rice Method, as advertised by Puravive, has gained significant attention for its supposed benefits. However, as with any new health trend, skepticism and curiosity abound. In this article, we'll delve into Puravive reviews to determine whether the Exotic Rice Method is genuine or just another health fad.&lt;/p&gt;
&lt;p&gt;The Exotic Rice Method: What Is It?&lt;/p&gt;
&lt;p&gt;The Exotic Rice Method is the flagship program offered by Puravive, a company that claims to harness the power of exotic rice varieties to improve health and well-being. According to Puravive, these rice varieties are sourced from far-flung regions and are exceptionally nutrient-dense. They are said to possess the potential to enhance metabolism, support weight loss, and boost overall health.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.state-journal.com/sponsored/puravive-reviews---fak-hyped-weight-loss-pills-or-real-customer-results/article_f456982c-746d-11ee-a0dc-5f43017b439d.html"&gt;Puravive&lt;/a&gt; offers this program in various formats, including dietary supplements, meal plans, and informational materials. The company suggests that by incorporating these unique rice varieties into your daily diet, you can experience numerous health benefits.&lt;/p&gt;
&lt;p&gt;Customer Reviews: The Real Story&lt;/p&gt;
&lt;p&gt;To get a better understanding of the Exotic Rice Method, we examined customer reviews from various sources. Here's what we found:&lt;/p&gt;
&lt;p&gt;Mixed Opinions&lt;br&gt;
Customer reviews are generally mixed. Some users report experiencing positive results, including improved energy levels, weight loss, and enhanced digestion after following the Exotic Rice Method. However, others express disappointment, claiming they didn't notice any significant changes.&lt;/p&gt;
&lt;p&gt;Weight Loss Claims&lt;br&gt;
A substantial portion of the customer reviews focuses on weight loss. Some individuals claim to have shed pounds successfully, attributing their success to the Exotic Rice Method. It's important to note, though, that individual results can vary widely, and factors such as overall diet, physical activity, and genetics also play a role in weight loss.&lt;/p&gt;
&lt;p&gt;Health Benefits&lt;br&gt;
Several users report improvements in their overall health, such as better digestion, more regular bowel movements, and increased energy levels. However, these claims are anecdotal and not supported by scientific studies.&lt;/p&gt;
&lt;p&gt;Skepticism&lt;br&gt;
While some users are enthusiastic about the Exotic Rice Method, others express skepticism about the product's effectiveness. Many people are cautious about the lack of scientific evidence and the high price of Puravive's offerings.&lt;/p&gt;
&lt;p&gt;Expert Opinions&lt;/p&gt;
&lt;p&gt;We also sought insights from nutrition and health experts to get a more balanced perspective on the Exotic Rice Method. Most experts caution against relying solely on exotic rice varieties for health benefits, emphasizing the importance of a balanced diet and a healthy lifestyle.&lt;/p&gt;
&lt;p&gt;Many nutritionists highlight the need for more research and scientific evidence to support the claims made by Puravive. The absence of such evidence raises concerns about the legitimacy of the Exotic Rice Method.&lt;/p&gt;
&lt;p&gt;The Verdict&lt;/p&gt;
&lt;p&gt;As of now, it is difficult to definitively label Puravive's Exotic Rice Method as either fake or legitimate. Customer reviews are mixed, and the lack of scientific evidence leaves room for skepticism.&lt;/p&gt;
&lt;p&gt;If you are considering trying the Exotic Rice Method or any of Puravive's products, it's essential to consult with a healthcare professional and conduct your own research. Keep in mind that no single product or dietary plan can guarantee success, and a balanced approach to nutrition and wellness is key.&lt;/p&gt;
&lt;p&gt;In conclusion, while the Exotic Rice Method may offer some potential benefits, its effectiveness and legitimacy are still open to debate. It's always wise to approach such health trends with caution and to consult experts for personalized advice on maintaining a healthy lifestyle.&lt;/p&gt;
&lt;p&gt;User&lt;br&gt;
write 5 articles on it&lt;br&gt;
ChatGPT&lt;br&gt;
Sure, I can provide you with the headlines and brief summaries for five articles on various topics. Please let me know which topics you'd like to explore further, and I can provide you with full articles.&lt;/p&gt;
&lt;p&gt;Title: "The Future of Sustainable Energy: Exploring Innovative Technologies"&lt;/p&gt;
&lt;p&gt;Summary: This article delves into cutting-edge technologies that are reshaping the landscape of sustainable energy. From advanced solar panels to energy storage solutions, we explore how these innovations are revolutionizing the way we generate and use clean energy.&lt;/p&gt;
&lt;p&gt;Title: "The Mental Health Revolution: How Technology Is Transforming Therapy"&lt;/p&gt;
&lt;p&gt;Summary: With the increasing prevalence of mental health issues, this article discusses how technology is making therapy more accessible and effective. It delves into online therapy platforms, AI-driven mental health apps, and the impact of virtual reality on mental health treatment.&lt;/p&gt;
&lt;p&gt;Title: "The Rise of Veganism: A Sustainable Diet for the Planet"&lt;/p&gt;
&lt;p&gt;Summary: Veganism is on the rise worldwide, and this article explores the reasons behind this trend. It looks at the environmental impact of vegan diets, the health benefits, and the ethical considerations that are driving people to embrace plant-based lifestyles.&lt;/p&gt;
&lt;p&gt;Title: "Exploring the Universe: The Next Frontier in Space Exploration"&lt;/p&gt;
&lt;p&gt;Summary: Space exploration has been capturing the world's imagination. In this article, we discuss upcoming missions to Mars, the study of exoplanets, the potential for asteroid mining, and the latest advancements in rocket technology.&lt;/p&gt;
&lt;p&gt;Title: "The Art of Mindfulness: A Path to Stress Reduction and Well-Being"&lt;/p&gt;
&lt;p&gt;Summary: Mindfulness has become a popular practice for managing stress and improving overall well-being. This article explores the benefits of mindfulness meditation, techniques for incorporating it into daily life, and its positive impact on mental health.&lt;/p&gt;
&lt;p&gt;User&lt;br&gt;
write we details&lt;br&gt;
ChatGPT&lt;/p&gt;
&lt;p&gt;3 / 3&lt;/p&gt;
&lt;p&gt;Certainly! Here are more detailed versions of the five article topics:&lt;/p&gt;
&lt;p&gt;1. The Future of Sustainable Energy: Exploring Innovative Technologies&lt;/p&gt;
&lt;p&gt;As the world grapples with climate change and the need to reduce our carbon footprint, sustainable energy solutions have become increasingly important. This article delves into the latest innovations that are reshaping the landscape of sustainable energy.&lt;/p&gt;
&lt;p&gt;From advanced solar panels that are more efficient and affordable to energy storage solutions like lithium-ion batteries, we explore how these cutting-edge technologies are revolutionizing the way we generate and use clean energy. Additionally, we discuss the potential of emerging technologies like fusion power and their implications for the future of global energy production.&lt;/p&gt;
&lt;p&gt;2. The Mental Health Revolution: How Technology Is Transforming Therapy&lt;/p&gt;
&lt;p&gt;Mental health issues affect millions of people around the world, and technology is playing a crucial role in making therapy more accessible and effective. This article investigates how the digital age is transforming the field of mental health treatment.&lt;/p&gt;
&lt;p&gt;We explore the rise of online therapy platforms, which connect individuals with licensed therapists via video chat or messaging. Additionally, we discuss the impact of AI-driven mental health apps that offer personalized support and coping strategies. Furthermore, we examine the potential of virtual reality therapy in treating various mental health conditions and its promise in providing immersive and effective treatment experiences.&lt;/p&gt;
&lt;p&gt;3. The Rise of Veganism: A Sustainable Diet for the Planet&lt;/p&gt;
&lt;p&gt;Veganism is experiencing a surge in popularity, driven by concerns over environmental sustainability, health, and ethical considerations. In this article, we take an in-depth look at the factors contributing to the rise of veganism and the potential benefits of adopting a plant-based diet.&lt;/p&gt;
&lt;p&gt;We discuss the environmental impact of vegan diets, including reduced greenhouse gas emissions and land use. Furthermore, we examine the health benefits associated with a well-balanced vegan diet, such as reduced risk of chronic diseases. Lastly, we explore the ethical considerations that are compelling more people to embrace plant-based lifestyles and the diverse range of vegan food options available.&lt;/p&gt;
&lt;p&gt;4. Exploring the Universe: The Next Frontier in Space Exploration&lt;/p&gt;
&lt;p&gt;Space exploration has entered an exciting new era with plans for missions to Mars, the study of exoplanets, and potential asteroid mining on the horizon. This article delves into the latest developments and innovations in space exploration.&lt;/p&gt;
&lt;p&gt;We discuss upcoming missions to Mars, including NASA's Artemis program and SpaceX's ambitious plans for the Red Planet. We explore the hunt for exoplanets, planets located outside our solar system, and how they could hold the key to understanding extraterrestrial life. We also look at the potential for asteroid mining and its role in securing vital resources for future space endeavors. Additionally, we touch on the latest advancements in rocket technology that are making space travel more accessible and efficient.&lt;/p&gt;
&lt;p&gt;5. The Art of Mindfulness: A Path to Stress Reduction and Well-Being&lt;/p&gt;
&lt;p&gt;In a fast-paced and often stressful world, mindfulness has gained recognition as a powerful practice for managing stress and improving overall well-being. This article takes a deep dive into the art of mindfulness.&lt;/p&gt;
&lt;p&gt;We explore the benefits of mindfulness meditation, including stress reduction, improved focus, and enhanced emotional regulation. Readers will gain insights into different mindfulness techniques, such as body scan, loving-kindness meditation, and mindful breathing, and learn how to incorporate them into their daily lives. Additionally, we discuss the scientific evidence supporting the positive impact of mindfulness on mental health and well-being, making a compelling case for its inclusion in one's self-care routine.&lt;/p&gt;
&lt;p&gt;User&lt;br&gt;
write 5 article on puravive-reviews-fake-or-legit-what-customers-have-to-say-about-exotic-rice-method--news&lt;br&gt;
ChatGPT&lt;/p&gt;
&lt;p&gt;2 / 2&lt;/p&gt;
&lt;p&gt;Certainly! Here are five articles exploring the topic of Puravive Reviews, focusing on whether the Exotic Rice Method is genuine or not, based on customer feedback and the latest news.&lt;/p&gt;
&lt;p&gt;1. "Puravive Reviews: Unveiling the Truth about the Exotic Rice Method"&lt;/p&gt;
&lt;p&gt;In this in-depth investigation, we delve into the Puravive Exotic Rice Method. We examine customer reviews and feedback to determine if this innovative approach to health and wellness is truly effective or merely a passing trend. From weight loss claims to health benefits, we separate the fact from fiction and offer a balanced perspective.&lt;/p&gt;
&lt;p&gt;2. "Puravive Exotic Rice Method: What Are Customers Really Saying?"&lt;/p&gt;
&lt;p&gt;This article focuses on the voices of Puravive customers. We take a closer look at the firsthand experiences of individuals who have tried the Exotic Rice Method. By presenting both success stories and concerns, we offer a comprehensive overview of the diverse array of opinions surrounding this unique health program.&lt;/p&gt;
&lt;p&gt;3. "Science vs. Claims: Does Puravive's Exotic Rice Method Hold Up?"&lt;/p&gt;
&lt;p&gt;In this piece, we explore the scientific aspects of the Puravive Exotic Rice Method. We examine whether the claims made by Puravive regarding the benefits of exotic rice varieties are supported by scientific research. By consulting experts and studies, we aim to provide clarity on the credibility of the program.&lt;/p&gt;
&lt;p&gt;4. "Puravive Exotic Rice Method: Price vs. Performance"&lt;/p&gt;
&lt;p&gt;One of the key factors that consumers consider is the cost-effectiveness of health programs. This article scrutinizes the cost of Puravive's Exotic Rice Method and evaluates whether the results it claims to deliver are commensurate with the price. By analyzing the value proposition, we help readers make informed decisions.&lt;/p&gt;
&lt;p&gt;5. "Latest News: Puravive's Exotic Rice Method and the Health &amp;amp; Wellness Industry"&lt;/p&gt;
&lt;p&gt;In this article, we explore the recent developments and news surrounding Puravive and its Exotic Rice Method. We discuss any updates, controversies, or regulatory actions that might impact the company's reputation and the public's perception of its products. Stay informed about the latest developments in the health and wellness industry.&lt;/p&gt;
&lt;p&gt;These articles will help provide a well-rounded view of the Puravive Exotic Rice Method, enabling readers to make informed decisions and judgments based on customer reviews, scientific analysis, and the latest news.&lt;/p&gt;
&lt;p&gt;Is this conversation helpful so far?&lt;/p&gt;
&lt;p&gt;CSW client support in QGIS has been via the excellent &lt;a href="https://github.com/nextgis/CSWClient" title="CSWClient"&gt;CSWClient&lt;/a&gt; plugin.  The &lt;a href="https://github.com/geopython/MetaSearch" title="MetaSearch"&gt;MetaSearch&lt;/a&gt; project forks CSWClient and will make the following initial improvements:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;ul&gt;
&lt;li&gt;QGIS 2.0 support&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;added Catalogue types in addition to CSW (JSON APIs, OpenSearch, etc.)&lt;/li&gt;
&lt;li&gt;XML highlighting&lt;/li&gt;
&lt;li&gt;documentation using Sphinx&lt;/li&gt;
&lt;li&gt;i18n/continuous localization for both UI and docs, using &lt;a href="https://www.transifex.com/" title="Transifex"&gt;Transifex&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;code maintenance (easy to deploy for developers, automated build, packaging and dependency management)&lt;/p&gt;
&lt;p&gt;I have started some of the work at &lt;a href="https://github.com/geopython/MetaSearch"&gt;https://github.com/geopython/MetaSearch&lt;/a&gt;, but help is certainly welcome.  If you're interested in getting core CSW support in QGIS, please get in &lt;a href="https://twitter.com/tomkralidis" title="touch"&gt;touch&lt;/a&gt; (twitter, or the &lt;a href="irc://irc.freenode.net/geopython" title="#geopython IRC channel"&gt;#geopython IRC channel&lt;/a&gt;).&lt;/p&gt;</content><category term="geospatial, open source, technology"/></entry><entry><title>Batch Centroid Calculations with Python and OGR</title><link href="https://kralidis.ca/blog/blog/2010/04/28/batch-centroid-calculations-with-python-and-ogr/" rel="alternate"/><published>2010-04-28T10:19:00+00:00</published><updated>2010-04-28T10:19:00+00:00</updated><author><name>tomkralidis</name></author><id>tag:kralidis.ca,2010-04-28:/blog/blog/2010/04/28/batch-centroid-calculations-with-python-and-ogr/</id><summary type="html">&lt;p&gt;I recently had a question on how to do batch centroid calculations against GIS data. &lt;a href="http://www.gdal.ogr/ogr/" title="OGR"&gt;OGR&lt;/a&gt; to the rescue again!&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.outlookindia.com/outlook-spotlight/richard-mille-replica-watches-where-to-buy-best-selling-fake-richard-mille-super-clones-news-313685"&gt;Richard Mille replica&lt;/a&gt; is a luxury watch brand founded in 1999 by French businessman and watchmaker, Richard Mille. Known for its innovative designs and high-tech materials, Richard Mille has become …&lt;/p&gt;</summary><content type="html">&lt;p&gt;I recently had a question on how to do batch centroid calculations against GIS data. &lt;a href="http://www.gdal.ogr/ogr/" title="OGR"&gt;OGR&lt;/a&gt; to the rescue again!&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.outlookindia.com/outlook-spotlight/richard-mille-replica-watches-where-to-buy-best-selling-fake-richard-mille-super-clones-news-313685"&gt;Richard Mille replica&lt;/a&gt; is a luxury watch brand founded in 1999 by French businessman and watchmaker, Richard Mille. Known for its innovative designs and high-tech materials, Richard Mille has become one of the most sought after brands in the world of luxury watches.&lt;/p&gt;
&lt;p&gt;However, with prices ranging from tens of thousands to millions of dollars, owning an authentic Richard Mille watch may seem like an unattainable dream for many. This is where the concept of replica watches comes into play.&lt;/p&gt;
&lt;p&gt;Replica watches are essentially copies or imitations of high-end designer watches that mimic their appearance and functionality. These replicas offer a more affordable alternative for those who desire the style and prestige associated with luxury brands like Richard Mille.&lt;/p&gt;
&lt;p&gt;But not all replica watches are created equal. There are various grades and qualities available in the market, making it crucial to do thorough research before making a purchase. And when it comes to Richard Mille replicas, it is essential to have a good understanding of what sets them apart from other replica watches.&lt;/p&gt;
&lt;p&gt;Using OGR's Python bindings (GDAL/OGR needs to be built --with-geos=yes), one can process, say, an ESRI Shapefile, and calculate a centroid for each feature.&lt;/p&gt;
&lt;p&gt;The script below does exactly this, and writes out a new dataset (any input / output format supported by OGR).&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nn"&gt;sys&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nn"&gt;osgeo.ogr&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;as&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nn"&gt;ogr&lt;/span&gt;

&lt;span class="c1"&gt;# process args&lt;/span&gt;
&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="nb"&gt;len&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;sys&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;argv&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
 &lt;span class="nb"&gt;print&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;Usage: &lt;/span&gt;&lt;span class="si"&gt;%s&lt;/span&gt;&lt;span class="s1"&gt; &amp;lt;format&amp;gt; &amp;lt;input&amp;gt; &amp;lt;output&amp;gt;&amp;#39;&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="n"&gt;sys&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;argv&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
 &lt;span class="n"&gt;sys&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;exit&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# open input file&lt;/span&gt;
&lt;span class="n"&gt;dataset_in&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;ogr&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Open&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;sys&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;argv&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;dataset_in&lt;/span&gt; &lt;span class="ow"&gt;is&lt;/span&gt; &lt;span class="kc"&gt;None&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
 &lt;span class="nb"&gt;print&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;Open failed.&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;&lt;/span&gt;
 &lt;span class="n"&gt;sys&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;exit&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;layer_in&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;dataset_in&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;GetLayer&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;feature_in&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;layer_in&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;GetNextFeature&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

&lt;span class="c1"&gt;# create output&lt;/span&gt;
&lt;span class="n"&gt;driver_out&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;ogr&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;GetDriverByName&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;sys&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;argv&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;driver_out&lt;/span&gt; &lt;span class="ow"&gt;is&lt;/span&gt; &lt;span class="kc"&gt;None&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
 &lt;span class="nb"&gt;print&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;&lt;/span&gt;&lt;span class="si"&gt;%s&lt;/span&gt;&lt;span class="s1"&gt; driver not available.&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="n"&gt;sys&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;argv&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
 &lt;span class="n"&gt;sys&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;exit&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;dataset_out&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;driver_out&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;CreateDataSource&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;sys&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;argv&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;dataset_out&lt;/span&gt; &lt;span class="ow"&gt;is&lt;/span&gt; &lt;span class="kc"&gt;None&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
 &lt;span class="nb"&gt;print&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;Creation of output file failed.&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;&lt;/span&gt;
 &lt;span class="n"&gt;sys&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;exit&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;layer_out&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;dataset_out&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;CreateLayer&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;sys&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;argv&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="kc"&gt;None&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;ogr&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;wkbPoint&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;layer_out&lt;/span&gt; &lt;span class="ow"&gt;is&lt;/span&gt; &lt;span class="kc"&gt;None&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
 &lt;span class="nb"&gt;print&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;Layer creation failed.&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;&lt;/span&gt;
 &lt;span class="n"&gt;sys&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;exit&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# setup attributes&lt;/span&gt;
&lt;span class="n"&gt;feature_in_defn&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;layer_in&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;GetLayerDefn&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nb"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;feature_in_defn&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;GetFieldCount&lt;/span&gt;&lt;span class="p"&gt;()):&lt;/span&gt;
 &lt;span class="n"&gt;field_def&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;feature_in_defn&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;GetFieldDefn&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
 &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;layer_out&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;CreateField&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;field_def&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;!=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
  &lt;span class="nb"&gt;print&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;Creating &lt;/span&gt;&lt;span class="si"&gt;%s&lt;/span&gt;&lt;span class="s1"&gt; field failed.&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="n"&gt;field_def&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;GetNameRef&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

&lt;span class="n"&gt;layer_in&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ResetReading&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="n"&gt;feature_in&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;layer_in&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;GetNextFeature&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

&lt;span class="c1"&gt;# loop over input features, calculate centroid and output features&lt;/span&gt;
&lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="n"&gt;feature_in&lt;/span&gt; &lt;span class="ow"&gt;is&lt;/span&gt; &lt;span class="ow"&gt;not&lt;/span&gt; &lt;span class="kc"&gt;None&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
 &lt;span class="n"&gt;feature_out_defn&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;layer_out&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;GetLayerDefn&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
 &lt;span class="n"&gt;feature_out&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;ogr&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Feature&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;feature_out_defn&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
 &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nb"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;feature_out_defn&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;GetFieldCount&lt;/span&gt;&lt;span class="p"&gt;()):&lt;/span&gt;
  &lt;span class="n"&gt;feature_out&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;SetField&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;feature_out_defn&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;GetFieldDefn&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;GetNameRef&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt;   
 &lt;span class="n"&gt;feature_in&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;GetField&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
  &lt;span class="n"&gt;geom&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;feature_in&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;GetGeometryRef&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
  &lt;span class="n"&gt;centroid&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;geom&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Centroid&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
  &lt;span class="n"&gt;feature_out&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;SetGeometry&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;centroid&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;layer_out&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;CreateFeature&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;feature_out&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;!=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
   &lt;span class="nb"&gt;print&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;Failed to create feature.&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;&lt;/span&gt;
   &lt;span class="n"&gt;sys&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;exit&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;6&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="n"&gt;feature_in&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;layer_in&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;GetNextFeature&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

&lt;span class="c1"&gt;# cleanup&lt;/span&gt;
&lt;span class="n"&gt;dataset_in&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Destroy&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="n"&gt;dataset_out&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Destroy&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Oh Lord! You cannot imagine how stressful it is to program this type of software. Actually I like it a lot, I don't deny it, it's very challenging, but sometimes stress beats me and my head hurts, my stomach hurts, it makes me dizzy, or I even get nervous.&lt;/p&gt;
&lt;p&gt;For that reason sometimes I eat a lot and I get fat, and I get even more stressed, but thank God I found a product that helps me a lot with my obesity, because this product generates a &lt;a href="https://theislandnow.com/blog-112/best-appetite-suppressant/"&gt;decrease appetite&lt;/a&gt; so I can continue with my life at Despite how challenging it is to schedule every day. I really recommend it. Bye!&lt;/p&gt;</content><category term="geospatial, open source, technology"/></entry><entry><title>NYC Sprint is Upon Us</title><link href="https://kralidis.ca/blog/blog/2010/02/19/nyc-sprint-is-upon-us/" rel="alternate"/><published>2010-02-19T15:28:00+00:00</published><updated>2010-02-19T15:28:00+00:00</updated><author><name>tomkralidis</name></author><id>tag:kralidis.ca,2010-02-19:/blog/blog/2010/02/19/nyc-sprint-is-upon-us/</id><summary type="html">&lt;p&gt;Building on the &lt;a href="http://wiki.osgeo.org/wiki/Toronto_Code_Sprint_2009" title="Toronto Code Sprint 2009"&gt;Toronto Code Sprint 2009&lt;/a&gt; (I had the honour of helping &lt;a href="http://blog.cleverelephant.ca/" title="Paul"&gt;Paul&lt;/a&gt; set this up), this year MapServer, GDAL, PostGIS, etc. devs are headed to to the Big Apple for the &lt;a href="http://wiki.osgeo.org/wiki/New_York_Code_Sprint_2010" title="New York Code Sprint 2010"&gt;New York Code Sprint 2010&lt;/a&gt;.  Having participated in last year's event, I can say that it is …&lt;/p&gt;</summary><content type="html">&lt;p&gt;Building on the &lt;a href="http://wiki.osgeo.org/wiki/Toronto_Code_Sprint_2009" title="Toronto Code Sprint 2009"&gt;Toronto Code Sprint 2009&lt;/a&gt; (I had the honour of helping &lt;a href="http://blog.cleverelephant.ca/" title="Paul"&gt;Paul&lt;/a&gt; set this up), this year MapServer, GDAL, PostGIS, etc. devs are headed to to the Big Apple for the &lt;a href="http://wiki.osgeo.org/wiki/New_York_Code_Sprint_2010" title="New York Code Sprint 2010"&gt;New York Code Sprint 2010&lt;/a&gt;.  Having participated in last year's event, I can say that it is a fun, spirited and productive event.  Though I won't be able to make it there in person this year, I will be among those 'present in spirit' on &lt;a href="irc://irc.freenode.net/#tosprint" title="#tosprint"&gt;#tosprint&lt;/a&gt; over the weekend.&lt;/p&gt;
&lt;p&gt;Keep an eye on Paul's blog for sprint &lt;a href="http://blog.cleverelephant.ca/2010/02/nyc-sprint-day-0.html" title="updates"&gt;updates&lt;/a&gt;.  Have fun guys!&lt;/p&gt;</content><category term="geospatial, open source, technology"/></entry><entry><title>Libraries Rock</title><link href="https://kralidis.ca/blog/blog/2010/02/03/why-xml-libraries-rock/" rel="alternate"/><published>2010-02-03T18:46:00+00:00</published><updated>2010-02-03T18:46:00+00:00</updated><author><name>tomkralidis</name></author><id>tag:kralidis.ca,2010-02-03:/blog/blog/2010/02/03/why-xml-libraries-rock/</id><summary type="html">&lt;div class="component hero with-alignment col-12 space-xl-top"&gt;

&lt;div class="component-content"&gt;

&lt;div class="container body-copy"&gt;

&lt;div class="left-bottom hero-banner-title"&gt;

&lt;div&gt;

# Expert Tips

&lt;/div&gt;

&lt;/div&gt;

&lt;/div&gt;

&lt;div class="banner-image d-none d-md-block"&gt;

&lt;img src="https://www.adamspetcare.com/-/media/project/oneweb/adams/images/photos/blog/landing/blog_header.jpg?h=396&amp;amp;iar=0&amp;amp;w=1416&amp;amp;hash=FF4F6EF8EA944FF0CF40849EEE8524B4" width="1416" height="396" alt="Dog with Two Cats #1" /&gt;

&lt;/div&gt;

&lt;/div&gt;

&lt;/div&gt;

&lt;div class="row component column-splitter"&gt;

&lt;div class="col-12 col-lg-8"&gt;

&lt;div class="row"&gt;

&lt;div class="component article-listing col-12 space-xl-bottom"&gt;

&lt;div class="component-content"&gt;

&lt;div class="product-wrap"&gt;

&lt;div class="row"&gt;

&lt;div class="col-lg-12"&gt;

&lt;div class="row"&gt;

&lt;/div&gt;

&lt;div class="row"&gt;

&lt;/div&gt;

&lt;div id="article-type" class="product-result-tiles"&gt;

&lt;div id="article-wrapper" class="custom-listing-wrapper"&gt;

&lt;div class="card-body"&gt;

- &lt;div class="cgp-product h-100"&gt;

  &lt;div class="image-holder"&gt;

  ![Go to another part of the page](https://www.adamspetcare.com/-/media/Project/OneWeb/Adams/Images/Photos/Blog/Article/ticks.jpg)

  &lt;/div&gt;

  &lt;div class="body-copy"&gt;

  ### Ticks

  If you have pets, you probably know a thing or two about ticks, but maybe you're wondering how to prevent or get rid of ticks in …&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;</summary><content type="html">&lt;div class="component hero with-alignment col-12 space-xl-top"&gt;

&lt;div class="component-content"&gt;

&lt;div class="container body-copy"&gt;

&lt;div class="left-bottom hero-banner-title"&gt;

&lt;div&gt;

# Expert Tips

&lt;/div&gt;

&lt;/div&gt;

&lt;/div&gt;

&lt;div class="banner-image d-none d-md-block"&gt;

&lt;img src="https://www.adamspetcare.com/-/media/project/oneweb/adams/images/photos/blog/landing/blog_header.jpg?h=396&amp;amp;iar=0&amp;amp;w=1416&amp;amp;hash=FF4F6EF8EA944FF0CF40849EEE8524B4" width="1416" height="396" alt="Dog with Two Cats #1" /&gt;

&lt;/div&gt;

&lt;/div&gt;

&lt;/div&gt;

&lt;div class="row component column-splitter"&gt;

&lt;div class="col-12 col-lg-8"&gt;

&lt;div class="row"&gt;

&lt;div class="component article-listing col-12 space-xl-bottom"&gt;

&lt;div class="component-content"&gt;

&lt;div class="product-wrap"&gt;

&lt;div class="row"&gt;

&lt;div class="col-lg-12"&gt;

&lt;div class="row"&gt;

&lt;/div&gt;

&lt;div class="row"&gt;

&lt;/div&gt;

&lt;div id="article-type" class="product-result-tiles"&gt;

&lt;div id="article-wrapper" class="custom-listing-wrapper"&gt;

&lt;div class="card-body"&gt;

- &lt;div class="cgp-product h-100"&gt;

  &lt;div class="image-holder"&gt;

  ![Go to another part of the page](https://www.adamspetcare.com/-/media/Project/OneWeb/Adams/Images/Photos/Blog/Article/ticks.jpg)

  &lt;/div&gt;

  &lt;div class="body-copy"&gt;

  ### Ticks

  If you have pets, you probably know a thing or two about ticks, but maybe you're wondering how to prevent or get rid of ticks in your yard or on your pet.

  &lt;/div&gt;

  &lt;/div&gt;

- &lt;div class="cgp-product h-100"&gt;

  &lt;div class="image-holder"&gt;

  ![Even a few fleas can be a problem for your dog.](https://www.adamspetcare.com/-/media/Project/OneWeb/Adams/Images/Photos/Blog/Article/dog-flea-infestation.jpg)

  &lt;/div&gt;

  &lt;div class="body-copy"&gt;

  ### How Many Fleas On A Dog Is Considered An Infestation?

  How many fleas on your dog is an infestation? Learn how to spot fleas, how many is too many, and how to deal with them.

  &lt;/div&gt;

  &lt;/div&gt;

- &lt;div class="cgp-product h-100"&gt;

  &lt;div class="image-holder"&gt;

  ![Go to another part of the page](https://www.adamspetcare.com/-/media/Project/OneWeb/Adams/Images/Photos/Blog/Article/ants.jpg)

  &lt;/div&gt;

  &lt;div class="body-copy"&gt;

  ### Ants

  Are ants wreaking havoc in your home? Find out how to get rid of ants (and carpenter ants) and how to prevent troublesome ant infestations in the first place.

  &lt;/div&gt;

  &lt;/div&gt;

- &lt;div class="cgp-product h-100"&gt;

  &lt;div class="image-holder"&gt;

  ![lyme-disease](https://www.adamspetcare.com/-/media/Project/OneWeb/Adams/Images/Photos/Blog/Article/lyme-disease.jpg)

  &lt;/div&gt;

  &lt;div class="body-copy"&gt;

  ### Symptoms Of Lyme Disease In Dogs

  Lyme disease can be a serious illness in dogs. Here's an inside look at what causes it and how you can prevent it.

  &lt;/div&gt;

  &lt;/div&gt;

- &lt;div class="cgp-product h-100"&gt;

  &lt;div class="image-holder"&gt;

  ![Mosquitoes are annoying, they bite, and they are noisy. If you](https://www.adamspetcare.com/-/media/Project/OneWeb/Adams/Images/Photos/Blog/Article/mosquitoes.jpg)

  &lt;/div&gt;

  &lt;div class="body-copy"&gt;

  ### Mosquitoes

  Plagued by mosquitoes? Wondering how to get rid of them? Should you spray? What if mosquitoes are in your house? Here are handy tips for mosquito control.

  &lt;/div&gt;

  &lt;/div&gt;

- &lt;div class="cgp-product h-100"&gt;

  &lt;div class="image-holder"&gt;

  ![flea-and-tick-season-101](https://www.adamspetcare.com/-/media/Project/OneWeb/Adams/Images/Photos/Blog/Article/flea-and-tick-season-101.jpg)

  &lt;/div&gt;

  &lt;div class="body-copy"&gt;

  ### Flea &amp; Tick Season 101

  Fleas and ticks can be a problem for pets all year long, even outside of the peak season. Learn all about their life cycles and how to protect against them. Read more about ***[Petfriendly purrs advance](https://www.petfriendlybox.com/products/purrs-advance-for-cats)***.

  &lt;/div&gt;

  &lt;/div&gt;

- &lt;div class="cgp-product h-100"&gt;

  &lt;div class="image-holder"&gt;

  ![camping with dogs](https://www.adamspetcare.com/-/media/Project/OneWeb/Adams/Images/Photos/Blog/Article/outdoor-activities.jpg)

  &lt;/div&gt;

  &lt;div class="body-copy"&gt;

  ### Autumn Outdoor Activities For Dogs

  Half the fun of having dogs in our lives is sharing various activities with them, including play dates at the dog park, camping, and hiking. Most dogs have lots of physical and mental energy—even saying the word “outside” can send them into a tail-wagging tizzy—so you’ll want to channel that energy into safe, fun activities you can both enjoy.

  &lt;/div&gt;

  &lt;/div&gt;

- &lt;div class="cgp-product h-100"&gt;

  &lt;div class="image-holder"&gt;

  ![high-risk-flea-areas](https://www.adamspetcare.com/-/media/Project/OneWeb/Adams/Images/Photos/Blog/Article/high-risk-flea-areas1.jpg)

  &lt;/div&gt;

  &lt;div class="body-copy"&gt;

  ### High Risk Flea Areas - Fleas In House

  Learn where fleas are commonly found and how to prevent them from traveling into your house on your pet.

  &lt;/div&gt;

  &lt;/div&gt;

- &lt;div class="cgp-product h-100"&gt;

  &lt;div class="image-holder"&gt;

  ![silverfish](https://www.adamspetcare.com/-/media/Project/OneWeb/Adams/Images/Photos/Blog/Article/silverfish.jpg)

  &lt;/div&gt;

  &lt;div class="body-copy"&gt;

  ### Silverfish

  Silverfish can be a nuisance around the house, so if you're wondering where they come from and how to get rid of these pesky insects, check out these silverfish facts and tips.

  &lt;/div&gt;

  &lt;/div&gt;

&lt;/div&gt;

&lt;/div&gt;

&lt;/div&gt;

&lt;/div&gt;

&lt;/div&gt;

&lt;/div&gt;

&lt;/div&gt;

&lt;/div&gt;

&lt;/div&gt;

&lt;/div&gt;

&lt;/div&gt;</content><category term="geospatial, open source, technology"/></entry><entry><title>fun with Shapelib</title><link href="https://kralidis.ca/blog/blog/2009/03/23/fun-with-shapelib/" rel="alternate"/><published>2009-03-23T10:27:00+00:00</published><updated>2009-03-23T10:27:00+00:00</updated><author><name>tomkralidis</name></author><id>tag:kralidis.ca,2009-03-23:/blog/blog/2009/03/23/fun-with-shapelib/</id><summary type="html">&lt;p&gt;We have some existing C modules which do a bunch of data processing, and wanted the ability to spit out shapefiles on demand.  &lt;a href="http://shapelib.maptools.org/" title="Shapelib"&gt;Shapelib&lt;/a&gt; is a C library which allows for reading and writing shapefiles and dbf files.  Thanks to the &lt;a href="http://shapelib.maptools.org/shp_api.html" title="API"&gt;API&lt;/a&gt; &lt;a href="http://shapelib.maptools.org/dbf_api.html" title="docs"&gt;docs&lt;/a&gt;, here's a pared down version of how …&lt;/p&gt;</summary><content type="html">&lt;p&gt;We have some existing C modules which do a bunch of data processing, and wanted the ability to spit out shapefiles on demand.  &lt;a href="http://shapelib.maptools.org/" title="Shapelib"&gt;Shapelib&lt;/a&gt; is a C library which allows for reading and writing shapefiles and dbf files.  Thanks to the &lt;a href="http://shapelib.maptools.org/shp_api.html" title="API"&gt;API&lt;/a&gt; &lt;a href="http://shapelib.maptools.org/dbf_api.html" title="docs"&gt;docs&lt;/a&gt;, here's a pared down version of how to write a new point shapefile (with, in this case, one record):&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="cp"&gt;#include&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="cpf"&gt;&amp;lt;stdio.h&amp;gt;&lt;/span&gt;
&lt;span class="cp"&gt;#include&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="cpf"&gt;&amp;lt;stdlib.h&amp;gt;&lt;/span&gt;
&lt;span class="cp"&gt;#include&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="cpf"&gt;&amp;lt;libshp/shapefil.h&amp;gt;&lt;/span&gt;

&lt;span class="cm"&gt;/*&lt;/span&gt;
&lt;span class="cm"&gt; build with: gcc -O -Wall -ansi -pedantic -g -L/usr/local/lib -lshp foo.c&lt;/span&gt;
&lt;span class="cm"&gt;*/&lt;/span&gt;

&lt;span class="kt"&gt;int&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="kt"&gt;double&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="kt"&gt;double&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;SHPHandle&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="n"&gt;hSHP&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;SHPObject&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;oSHP&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;DBFHandle&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="n"&gt;hDBF&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;malloc&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;sizeof&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;malloc&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;sizeof&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;

&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="cm"&gt;/* create shapefile and dbf */&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;hSHP&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;SHPCreate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;bar&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;SHPT_POINT&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;hDBF&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;DBFCreate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;bar&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;DBFAddField&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;hDBF&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;stationid&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;FTString&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;25&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="cm"&gt;/* add record */&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;-75&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;45&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;oSHP&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;SHPCreateSimpleObject&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;SHPT_POINT&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;NULL&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;SHPWriteObject&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;hSHP&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;-1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;oSHP&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;DBFWriteStringAttribute&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;hDBF&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;abcdef&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="cm"&gt;/* destroy */&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;SHPDestroyObject&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;oSHP&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="cm"&gt;/* close shapefile and dbf */&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;SHPClose&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;hSHP&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;DBFClose&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;hDBF&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;free&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;free&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="k"&gt;return&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Done!&lt;/p&gt;</content><category term="geospatial, open source, technology"/></entry><entry><title>FOSS4G History</title><link href="https://kralidis.ca/blog/blog/2008/08/21/foss4g-history/" rel="alternate"/><published>2008-08-21T17:40:00+00:00</published><updated>2008-08-21T17:40:00+00:00</updated><author><name>tomkralidis</name></author><id>tag:kralidis.ca,2008-08-21:/blog/blog/2008/08/21/foss4g-history/</id><summary type="html">&lt;p&gt;&lt;a href="http://mateusz.loskot.net/" title="Mateusz"&gt;Mateusz&lt;/a&gt; posted a &lt;a href="http://mateusz.loskot.net/2008/08/21/history-of-foss4g/"&gt;link&lt;/a&gt; to an interesting topic on osgeo-discuss. I think it's a great idea to document the history of geospatial and open source, and I echo &lt;a href="http://lists.osgeo.org/pipermail/discuss/2008-August/004137.html" title="Dave's comments"&gt;Dave's comments&lt;/a&gt; on how Wikipedia would be an ideal home for documentation and maintenance.&lt;/p&gt;
&lt;p&gt;Perhaps the best way to go about this …&lt;/p&gt;</summary><content type="html">&lt;p&gt;&lt;a href="http://mateusz.loskot.net/" title="Mateusz"&gt;Mateusz&lt;/a&gt; posted a &lt;a href="http://mateusz.loskot.net/2008/08/21/history-of-foss4g/"&gt;link&lt;/a&gt; to an interesting topic on osgeo-discuss. I think it's a great idea to document the history of geospatial and open source, and I echo &lt;a href="http://lists.osgeo.org/pipermail/discuss/2008-August/004137.html" title="Dave's comments"&gt;Dave's comments&lt;/a&gt; on how Wikipedia would be an ideal home for documentation and maintenance.&lt;/p&gt;
&lt;p&gt;Perhaps the best way to go about this would be for the various projects on Wikipedia (&lt;a href="http://en.wikipedia.org/wiki/MapServer" title="MapServer"&gt;MapServer&lt;/a&gt;, &lt;a href="http://en.wikipedia.org/wiki/GDAL" title="GDAL"&gt;GDAL&lt;/a&gt;, &lt;a href="http://en.wikipedia.org/wiki/GeoTools" title="GeoTools"&gt;GeoTools&lt;/a&gt;, &lt;a href="http://en.wikipedia.org/wiki/GRASS_GIS" title="GRASS"&gt;GRASS&lt;/a&gt;, etc.) to document their respective histories, and allow the main Wikipedia &lt;a href="http://en.wikipedia.org/wiki/Osgeo" title="OSGeo"&gt;OSGeo&lt;/a&gt; page to link to them accordingly.&lt;/p&gt;
&lt;p&gt;Thoughts? Are there better alternatives than Wikipedia? Should projects document history on their own respective websites, which Wikipedia then references&lt;/p&gt;</content><category term="geospatial, open source, technology"/></entry><entry><title>My MapServer Wishlist</title><link href="https://kralidis.ca/blog/blog/2007/04/23/my-mapserver-wishlist/" rel="alternate"/><published>2007-04-23T19:02:00+00:00</published><updated>2007-04-23T19:02:00+00:00</updated><author><name>tomkralidis</name></author><id>tag:kralidis.ca,2007-04-23:/blog/blog/2007/04/23/my-mapserver-wishlist/</id><summary type="html">&lt;p&gt;I've been working with &lt;a href="http://mapserver.gis.umn.edu/" title="MapServer"&gt;MapServer&lt;/a&gt; since 2000. In October 2006, I was &lt;a href="http://www.nabble.com/forum/ViewPost.jtp?post=6887433&amp;amp;framed=y" title="added as a committer"&gt;added as a committer&lt;/a&gt; to the codebase. Since then, I've been working on mainly OGC support and Perl mapscript type issues. After a few months, here are some things which I would like to see at some point …&lt;/p&gt;</summary><content type="html">&lt;p&gt;I've been working with &lt;a href="http://mapserver.gis.umn.edu/" title="MapServer"&gt;MapServer&lt;/a&gt; since 2000. In October 2006, I was &lt;a href="http://www.nabble.com/forum/ViewPost.jtp?post=6887433&amp;amp;framed=y" title="added as a committer"&gt;added as a committer&lt;/a&gt; to the codebase. Since then, I've been working on mainly OGC support and Perl mapscript type issues. After a few months, here are some things which I would like to see at some point in MapServer from a developer's point of view.&lt;/p&gt;
&lt;p&gt;1./ libxml2 support: it would be of benefit to MapServer to have XML support taken care of by libxml2. Currently, MapServer uses msIO_printf, which, while functional, is &lt;a href="http://trac.osgeo.org/mapserver/ticket/2070" title="prone to XML errors"&gt;prone to XML errors&lt;/a&gt; in particular when outputting XML. libxml2 takes care of closing tags, quoting attributes, namespaces, schemas, and a slew of other functionality. Also, coding MapServer XML in libxml2 allows for extensibility (e.g. applying a stylesheet via mapfile configuration).&lt;/p&gt;
&lt;p&gt;2./ Better organized codebase: something like:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;mapserver/&lt;/li&gt;
&lt;li&gt;etc/&lt;/li&gt;
&lt;li&gt;core/&lt;/li&gt;
&lt;li&gt;formats/&lt;/li&gt;
&lt;li&gt;mapscript/&lt;/li&gt;
&lt;li&gt;ogc/&lt;/li&gt;
&lt;li&gt;tests/&lt;/li&gt;
&lt;li&gt;util/&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;3./ subversion: It's nice to see MapServer move towards a shared infrastructure like &lt;a href="http://www.osgeo.org/" title="OSGeo"&gt;OSGeo&lt;/a&gt;'s and leverage &lt;a href="http://trac.edgewall.com/" title="trac"&gt;trac&lt;/a&gt; for &lt;a href="http://trac.osgeo.org/mapserver" title="issue tracking"&gt;issue tracking&lt;/a&gt;. Already an improvement over bugzilla, trac also plays nice with &lt;a href="http://subversion.tigris.org/" title="subversion"&gt;subversion&lt;/a&gt;. So hopefully it will just be a matter of time before the codebase gets ported from CVS.&lt;/p&gt;</content><category term="geospatial, open source, technology"/></entry><entry><title>GDAL 1.3.2 released</title><link href="https://kralidis.ca/blog/blog/2006/05/12/gdal-132-released/" rel="alternate"/><published>2006-05-12T08:07:00+00:00</published><updated>2006-05-12T08:07:00+00:00</updated><author><name>tomkralidis</name></author><id>tag:kralidis.ca,2006-05-12:/blog/blog/2006/05/12/gdal-132-released/</id><content type="html">&lt;p&gt;&lt;a href="http://www.gdal.org/download.html" title="GDAL"&gt;GDAL&lt;/a&gt; 1.3.2 has been released. I especially like the &lt;a href="http://www.mysql.com/" title="MySQL"&gt;MySQL&lt;/a&gt; and &lt;a href="http://www.clarklabs.org/" title="Idrisi"&gt;Idrisi&lt;/a&gt; support. Kudos to the development team!&lt;/p&gt;</content><category term="geospatial, open source, technology"/></entry><entry><title>Howard Butler's Article on Katrina GIS</title><link href="https://kralidis.ca/blog/blog/2005/09/27/howard-butlers-article-on-katrina-gis/" rel="alternate"/><published>2005-09-27T22:35:00+00:00</published><updated>2005-09-27T22:35:00+00:00</updated><author><name>tomkralidis</name></author><id>tag:kralidis.ca,2005-09-27:/blog/blog/2005/09/27/howard-butlers-article-on-katrina-gis/</id><content type="html">&lt;p&gt;Check out Howard's wicked &lt;a href="http://www.directionsmag.com/article.php?article_id=2008" title="article"&gt;article&lt;/a&gt; on the Katrina GIS project on Directions Magazine&lt;/p&gt;</content><category term="geospatial, open source, technology"/></entry><entry><title>Hurricane Katrina GIS Support</title><link href="https://kralidis.ca/blog/blog/2005/09/11/hurricane-katrina-gis-support/" rel="alternate"/><published>2005-09-11T21:00:00+00:00</published><updated>2005-09-11T21:00:00+00:00</updated><author><name>tomkralidis</name></author><id>tag:kralidis.ca,2005-09-11:/blog/blog/2005/09/11/hurricane-katrina-gis-support/</id><content type="html">&lt;p&gt;I started helping out this cause to help provide access to Hurricane Katrina geospatial information. &lt;a href="http://www.hobu.net/" title="Howard Butler"&gt;Howard Butler&lt;/a&gt; has provided a nice &lt;a href="http://www.hobu.net/index_html/katrina" title="description"&gt;description&lt;/a&gt; of the project&lt;/p&gt;</content><category term="geospatial, open source, technology"/></entry><entry><title>Tom in Minneapolis, Minnesota, USA, 16 - 18 June 2005</title><link href="https://kralidis.ca/blog/blog/2005/03/27/tom-in-minneapolis-minnesota-usa-16-18-june-2005/" rel="alternate"/><published>2005-03-27T17:34:00+00:00</published><updated>2005-03-27T17:34:00+00:00</updated><author><name>tomkralidis</name></author><id>tag:kralidis.ca,2005-03-27:/blog/blog/2005/03/27/tom-in-minneapolis-minnesota-usa-16-18-june-2005/</id><content type="html">&lt;p&gt;I'm going here for a conference on &lt;a href="http://mapserver.gis.umn.edu/mum/mtg2005.html" title="Open Source Geospatial and MapServer Users Meeting"&gt;Open Source Geospatial and MapServer Users Meeting&lt;/a&gt;.&lt;/p&gt;</content><category term="geospatial, open source, technology"/></entry><entry><title>Tom Successfully Defends Masters Thesis</title><link href="https://kralidis.ca/blog/blog/2005/02/08/tom-successfully-defends-masters-thesis/" rel="alternate"/><published>2005-02-08T07:34:00+00:00</published><updated>2005-02-08T07:34:00+00:00</updated><author><name>tomkralidis</name></author><id>tag:kralidis.ca,2005-02-08:/blog/blog/2005/02/08/tom-successfully-defends-masters-thesis/</id><content type="html">&lt;p&gt;Finally! I successfully defended my &lt;a href="/gis/masters/thesis/index.html" title="masters thesis"&gt;masters thesis&lt;/a&gt; on 07 February 2005 at Carleton U. Let the party begin!&lt;/p&gt;</content><category term="geospatial, open source, technology"/></entry></feed>