Git Product home page Git Product logo

camshaft's Introduction

[DEPRECATED]

Hey! This content applies only to previous CARTO products.

Please check if it's relevant to your use case. On October 2021 we released the current version of our platform. You can learn more and read the latest documentation at docs.carto.com

What is CARTO?

Code Climate Build Status

CARTO is an open, powerful, and intuitive platform for discovering and predicting the key insights underlying the location data in our world.

Empower organizations to optimize operational performance, strategic investments, and everyday decisions with CARTO Engine—our embeddable platform for web and mobile apps—and the new CARTO Builder, a drag and drop analysis tool.

It was built to make it easier for people to tell their stories by providing them with flexible and intuitive ways to create maps and design geospatial applications. CARTO can be installed on your own server and we also offer a hosted service at carto.com.

If you would like to see some live demos, check out our videos on Vimeo. We hope you like it!

Map view Data View

What can I do with CARTO?

With CARTO, you can upload your geospatial data (Shapefiles, GeoJSON, etc) using a web form and then make it public or private.

After it is uploaded, you can visualize it in a dataset or on a map, search it using SQL, and apply map styles using CartoCSS. You can even access it using the CARTO APIs, or export it to a file.

In other words, with CARTO you can make awesome maps and build powerful geospatial applications! Definitely check out the CARTO Platform for interactive examples and code.

Installing

Read the installation guide in CARTO developers documentation

How do I upgrade CARTO?

See UPGRADE for instructions about upgrading CARTO.

For upgrade of Windshaft-CartoDB and CartoDB-SQL-API see the relative documentation.

Developing & Contributing to CARTO

See our contributing doc for how you can improve CARTO, but you will need to sign a Contributor License Agreement (CLA) before making a submission, learn more here.

Testing

Check the testing doc section.

Requirements

CARTO works in any modern browser, but if you want more info:

Chrome Firefox IE Opera Safari
31+ ✔ 38+ ✔ 11+ ✔ 31+ ✔ 8+ ✔

camshaft's People

Contributors

abelvm avatar algunenano avatar andy-esch avatar dependabot[bot] avatar dgaubert avatar iriberri avatar javisantana avatar jesus89 avatar jgoizueta avatar juanignaciosl avatar juanrmn avatar matallo avatar oleurud avatar rochoa avatar rubenmoya avatar shylpx avatar stuartlynn avatar talos avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

camshaft's Issues

Create BufferEnrichment Example

I'd like to see a basic Data Observatory workflow defined such as,

  1. User has a point dataset
  2. They assign a trade area around that point dataset by a 10 minute Driving distance
  3. They enrich those trade areas with multiple measurements from the DO

This is essentially the first half of this blog post. @talos this is going to be a point of entry for the UI to get the DO, so it would be good if you actually helped define some of the core bits to start it off.

@rochoa are you happy if we start trying to test some of the integration points across DO and crankshaft functions?

Georeference analyses should allow to use a custom text input instead of a column name

Working on this issue CartoDB/cartodb#8759 I've realized that certain analysis (like georeference-city) always expect column names as input params and retrieve an error if that's not the case:

{
    "errors": [
        "column \"Island\" does not exist"
    ],
    "errors_with_context": [
        {
            "type": "analysis",
            "message": "column \"Island\" does not exist",
            "analysis": {
                "id": "b1",
                "type": "georeference-city"
            }
        }
    ]
}

To maintain the same functionality of the old editor, we should allow sending arbitrary texts and not only columns.

Also, note that currently, if the user sends a couple of words separated by an space, the API returns an error (in this example I sent 'Trinidad and Tobago' as the country):

{
    "errors": [
        "column \"trinidad\" does not exist"
    ],
    "errors_with_context": [
        {
            "type": "analysis",
            "message": "column \"trinidad\" does not exist",
            "analysis": {
                "id": "b1",
                "type": "georeference-city"
            }
        }
    ]
}

enable optimizations for filter only analysis

having this scenario:

[points table][A0] -> [buffer][A1] -> [DO measure][A2]

adding a histogram widget to A1 and filter makes the A2 to recalcualte again all the rows (which is slow). In this particular case we could just use the same filter than the on applied to [A1](in other words, it's the same to apply to filter to the A1 output than A2 one)

Obviously this is not always true, not all the analysis work in that but in general augmetation ones could work in that way

(not sure if this ticket belongs here of to windshaft)

cc @saleiva @rochoa

Perfect Sales Territory - K means with Weights Analysis

Create a Camshaft/Crankshaft analysis that takes a list of points and weights and calculates n weighted cluster centers for those points.

Use sk-learn with modified distance formula so that we can find the weighted centroid rather than the regular one, something like:

$d = ((x-x)^2 + (y-y)^2 )/w$

Join analysis failing with country data

that's the error I get when trying to do a join between a table with country names and a few columns more and the world countries dataset from the Data library.

{"errors":["Postgis Plugin: ERROR: transform: couldn't project point (180 -90 0): tolerance condition error (-20)\n\nin executeQuery Full sql was: 'SELECT ST_AsTWKB(ST_Simplify(ST_RemoveRepeatedPoints("the_geom_webmercator",1e-05),1e-05,true),5) AS geom FROM (SELECT ST_Transform(the_geom, 3857) the_geom_webmercator, titulo_seminario, sector, mercado, country, accesos, right_iso_a3\nFROM (SELECT _cdb_analysis_right_source.the_geom as the_geom, _cdb_analysis_left_source.titulo_seminario, _cdb_analysis_left_source.sector, _cdb_analysis_left_source.mercado, _cdb_analysis_left_source.country, _cdb_analysis_left_source.accesos, _cdb_analysis_right_source.iso_a3 as right_iso_a3\nFROM\n (SELECT * FROM table_sheet1) AS _cdb_analysis_left_source\n INNER JOIN\n (SELECT * FROM world_countries) AS _cdb_analysis_right_source\nON _cdb_analysis_left_source.country = _cdb_analysis_right_source.name) _cdb_analysis_query) as cdbq WHERE "the_geom_webmercator" && ST_MakeEnvelope(-20037508.3,20037508.25881302,-20037508.25881302,20037508.3,3857)'\n"],"errors_with_context":[{"type":"unknown","message":"Postgis Plugin: ERROR: transform: couldn't project point (180 -90 0): tolerance condition error (-20)\n\nin executeQuery Full sql was: 'SELECT ST_AsTWKB(ST_Simplify(ST_RemoveRepeatedPoints("the_geom_webmercator",1e-05),1e-05,true),5) AS geom FROM (SELECT ST_Transform(the_geom, 3857) the_geom_webmercator, titulo_seminario, sector, mercado, country, accesos, right_iso_a3\nFROM (SELECT _cdb_analysis_right_source.the_geom as the_geom, _cdb_analysis_left_source.titulo_seminario, _cdb_analysis_left_source.sector, _cdb_analysis_left_source.mercado, _cdb_analysis_left_source.country, _cdb_analysis_left_source.accesos, _cdb_analysis_right_source.iso_a3 as right_iso_a3\nFROM\n (SELECT * FROM table_sheet1) AS _cdb_analysis_left_source\n INNER JOIN\n (SELECT * FROM world_countries) AS _cdb_analysis_right_source\nON _cdb_analysis_left_source.country = _cdb_analysis_right_source.name) _cdb_analysis_query) as cdbq WHERE "the_geom_webmercator" && ST_MakeEnvelope(-20037508.3,20037508.25881302,-20037508.25881302,20037508.3,3857)'\n"}]}

Filter rank analysis

Add new analysis to support filtering by a ranked column to pick top or bottom N elements.

Improve cached nodes and filters inner working

Currently adding a filter to a cached node creates an additional table because filters affect node id.

Filters have to affect node.id but they must not change cached table name. Cached table name should only change on params change.

Allow "in surface" option for centroid analysis

Instead of always using ST_Centroid, add a new parameter to allow using ST_PointOnSurface instead.

My use case is that I'm creating a centroid analysis node that I want later to intersect again with the original polygon layer (countries) and some of them have the centroid outside their geometry (like Japan).

Analysis of geocoding analyses

Hey there! I'm taking a look at the current geocoder analyses from the Data Services team point of view. I hope this helps!

Administrative regions

Analysis here.

For this category, DS API has a function per each administrative level. Right now we have 2 of them: admin0 (countries) and admin1 (states, provinces)

Country geocoding

  • Parameters:
    • country (mandatory): from a column value
DS API function signatures:
  • cdb_geocode_admin0_polygon(country_name text)

The result is always a polygon.

Admin. level 1 (provinces/states) geocoding

  • Parameters:
    • admin1_name (mandatory): from a column value
    • country_name (optional): from a column value or free text
DS API function signatures:
  • cdb_geocode_admin1_polygon(admin1_name text)
    • To be used when we only have admin1_name, sending a null as country will not bring back the desired result
  • cdb_geocode_admin1_polygon(admin1_name text, country_name text)
    • To be used when we have the country (in a column or as free text)

The result of these functions is always a polygon.

Spotted issues

  • Currently there's no geocoder for countries. #128 (comment)
  • Admin1 geocoder should use different functions from the Data Services API depending on the parameters
  • For administrative regions of level 1, the country parameter should be optional.
  • For administrative regions of level 1, the country parameter could be free text. Already reported at #137

IP Addresses

  • Parameters
    • IP addr (mandatory): from a column value
DS API function signatures:
  • cdb_geocode_ipaddress_point(ip_address text)
    • To be used always, there are no special cases for this geocoding

This function always return points.

Spotted issues

None 👍 😄

City names

  • Parameters
    • city name (mandatory): from a column value
    • admin1 name (optional): from a column value or free text
    • country name (optional): from a column value or free text
DS API function signatures:
  • cdb_geocode_namedplace_point(city_name text)
    • To be used when we just have the city name
  • cdb_geocode_namedplace_point(city_name text, country_name text)
    • To be used when we have city + country
  • cdb_geocode_namedplace_point(city_name text, admin1_name text, country_name text)
    • To be used when we have city + region + country

Spotted issues

  • The function with three parameters is always being used and it will not get a response with null values as parameters
  • Similarly as with other analysis, region and country parameters can be optional
  • Similarly as with other analysis, region and country parameters can be free text

Street addresses

  • Parameters
    • address (mandatory): from a column value
    • city (optional): from a column value or free text
    • state/province/region (optional): from a column value or free text
    • country (optional): from a column value or free text
DS API function signatures:
  • cdb_geocode_street_point(search_text text, [city text], [state text], [country text])
    • To be used always. This function works in a different way that the rest with respect to the parameters. Null values passed as parameters won't have any bad effect here.

These functions always return points.

Spotted issues

None 👍 😄

But a Note:
Mapzen geocoder works in a special way and works much better if we send the country code in ISO3. We do this internally through the API, but for this we need the country parameter to be filled -- we convert it to ISO3. The current implementation of this analysis is respecting this, but it's something to take into account if something is to be changed. :)

Postal codes

  • Parameters
    • postal code (mandatory): from a column value
    • country (mandatory): from a column value or free text
DS API function signatures:
  • cdb_geocode_postalcode_polygon(postal_code text, country_name text)
    • To be used when we want polygon results. This function only has coverage on USA, FRA, CAN and AUS.
  • cdb_geocode_postalcode_point(postal_code text, country_name text)
    • To be used when we want point results. This function has coverage in most part of the world.

Spotted issues

  • Only the polygon function is being used at this moment in the analysis. There should be a new parameter with the type of geometry (point or polygon) which should determine which of the two functions above is called. Parameters are the same for both but the result varies in terms of the geometry.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.