All types of development environments need access to weather data. From command-line tasks such as database ETL, to scripts that drive websites and priority alerts, to mobile apps and complex business applications, weather data drives insight, decisions, and revenue. A good weather API is flexible enough to span all of these use cases, bringing a single-point weather forecast with a simple API query or a dataset of thousands of historical weather records with another. In this article we will discuss how to use the Visual Crossing Weather API as a single weather source to drive all of your weather needs from the most simple script to the most business-critical real-time application.
Requirements for making a weather data API query
While many utilities, business tools, scripts, and coding languages can easily make weather API queries, there is a minimum set of functionality required to do so. It is worth taking a moment to consider these requirements before discussing specific tools.
- Unblocked internet access – While this might seem like a given, it is useful to list as a foundational requirement. Without unblocked access to our weather data servers at weather.visualcrossing.com, you will be unable to run weather API queries.
- Ability to construct URLs – This can be as simple as using hard-coded URL strings in a command-line script, but it is often more useful to be able to dynamically modify parts of the URL in your script or code. Nearly all scripting and coding languages allow string manipulations, so these can be used at a minimum. However, most modern languages such as Python, Perl, and Java have built-in or access to URL manipulation libraries. These make the URL editing process easier and less error prone.
- Ability to run HTTPS queries – While any script or language with networking functionality can make HTTP calls, it is difficult unless you have a set of HTTP networking functions to help. Luckily nearly all environments birthed in the internet era have HTTP query functionality built in or available via external library. Even older languages such as C++ have libraries available that make using HTTP easy.
- Ability to parse result data – The Visual Crossing Weather API provides weather data in several industry-standard formats. The most universal is CSV. CSV is the most common tabular data exchange format and can be parsed by nearly all data analysis tools as well as scripts and code. In fact, CSV can be parsed fairly easily with standard string manipulation functions available in nearly all languages. However, most languages have libraries that make the job even simpler, If you are scripting or coding in a modern environment, however, you’ll appreciate JSON output. JSON is more flexible and self-descriptive than CSV and can be parsed natively by many modern tools and languages. For example, Python has built-in JSON parsing, Excel can read JSON directly from a web service URL, and JSON libraries are available for many others.
There is no need to limit your choice of tools
Since the Visual Crossing API uses industry-standard, RESTful web services, there is no need to limit your choice of tools. This flexibility allows you to use weather data in every application and chose the best tool for every task. Here are some common environments and options to guide you.
cURL is an open source, command-line tool used for fetching data via standard network protocols such as HTTP. One great benefit of cURL is that it is already installed on nearly all Unix/Linux environments and is also installed by default on modern versions of Windows. (If you need to download it for an older Windows installation, the tool is only a few clicks away: https://curl.haxx.se/download.html.) This makes cURL nearly ubiquitous.
Fetching weather data using a cURL command-line to a file named “WeatherOutput.csv” is as easy as this
curl –o WeatherOutput.csv “<QueryURL>”
Just make sure to quote the query URL as required for running from your command environment. For more details on using cURL, read our detailed article here.
Wget is very similar to cURL. It is open source and runs from the command-line also. Although it is installed less commonly, some people find it more powerful, especially in a Unix/Linux environment. If you don’t already have Wget installed, you can download it for nearly any platform here: http://wget.addictivecode.org/FrequentlyAskedQuestions.html#download. In the basic case, it works exactly like cURL, and you can use a very similar command-line to download weather query results.
wget –O WeatherOutput.csv “<QueryURL>”
Python is a high-level scripting language that is ideally suited for querying and processing weather data. It is typically installed on most Unix and Linux environments and can be installed on Windows from the Microsoft Windows App Store ( https://www.microsoft.com/en-us/p/python-38/9mssztt1n39l) or directly from the source ( https://www.python.org/downloads/windows/) if you prefer.
Python also offers built-in functionality to query data from a URL via HTTP and can directly read and parse CSV and JSON results. This means that when using weather data in Python, you only need to worry about logic that is specific to your business use case. Your work won’t get bogged down managing network queries or parsing results. In addition, Python is so commonly used that it has packages for dealing with many common tasks including database connections, analytics, and visualization. Code samples and examples are available for a multitude of tasks as well including weather querying. These can save a lot of time when building your weather app.
Perl is another high-level scripting language used in a similar way as Python. It is more commonly used on Unix/Linux environments as it is specifically designed to work well in that environment. If you need Perl for Windows, however, you can find here: https://www.perl.org/get.html. Like Python, it has built-in functionality for querying data via HTTP and can easily parse CSV and JSON. While Python may be seen as more modern and universal, some people see Perl as a more powerful option. Since querying weather data is easy in either language, you have the freedom to choose the one that is more available in your environment or more compatible with other libraries and tools that you plan to use.
As an extremely popular high-level language, Java is available in nearly all environments. It can query data directly from a URL via HTTP, however parsing the results takes a little more effort. If you want to accomplish your project using only built-in functionality, Java can parse CSV via Java’s built-in string functionality. However, in general you would be better served using a 3rd-party library such as Apache Commons CSV. This will allow you to read (and write) CSV easily and without the errors that string manipulation case cause. There is no JSON parser built in to Java, however there are many excellent 3rd-party options including Jackson, Google’s GSON, and Org.JSON. In fact, 3rd-party libraries as one of the main benefits of using Java. No matter what weather use case you plan, you will find existing libraries out there to help accomplish your vision.
If you would like more details on querying and parsing weather data in Java, please see our more detailed article specifically on Java.
C++ is a powerful, general-purpose language but the simplicity of its core means that it requires external libraries to help with many common tasks. In the case of weather data, external libraries are required for HTTP querying as well as CSV and JSON parsing. (Technically, you could parse string results such as CSV with built-in string manipulations, but that would be a lot of effort and error prone even for experience coders.) However, these libraries are readily available often in open source including Curl++, cpp-netlib, RapidJSON, and jsoncapp. If you are building an industrial strength application, you can easily run weather queries and consume weather data in C++.
While not intended to provide specific details, this whirlwind overview was designed to show how easily and conveniently weather data can be queries and used in nearly any environment. Whether you are using a few lines of shell script and need a command-line tool or writing a core business application in Java or C++, the Visual Crossing Weather API is flexible enough to integrate smoothly. The simple, URL-based, RESTful API and the industry-standard output formats allow weather data use cases to be implemented everywhere.
If you have more detailed questions or would like information on a platform or use case not discussed here, please check out our resource library or reach out to our weather experts. We’ll be happy to help solve your weather data use case in any environment.