{"about":{"site":"https://codewithpapers.app","non_affiliation":"Code with Papers and Syntology are not affiliated with, endorsed by, or sponsored by Papers with Code, Meta, or the pwc-archive mirror.","licence":"CC BY-SA 4.0","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","attribution":"https://codewithpapers.app/attribution","modified":"archive material modified by Syntology; see the attribution page"},"url":"/paper/satclip-global-general-purpose-location","title":"SatCLIP: Global, General-Purpose Location Embeddings with Satellite Imagery","arxiv_id":"2311.17179","date":"2023-11-28","proceeding":null,"authors":["Konstantin Klemmer","Esther Rolf","Caleb Robinson","Lester Mackey","Marc Rußwurm"],"abstract":"Geographic information is essential for modeling tasks in fields ranging from ecology to epidemiology. However, extracting relevant location characteristics for a given task can be challenging, often requiring expensive data fusion or distillation from massive global imagery datasets. To address this challenge, we introduce Satellite Contrastive Location-Image Pretraining (SatCLIP). This global, general-purpose geographic location encoder learns an implicit representation of locations by matching CNN and ViT inferred visual patterns of openly available satellite imagery with their geographic coordinates. The resulting SatCLIP location encoder efficiently summarizes the characteristics of any given location for convenient use in downstream tasks. In our experiments, we use SatCLIP embeddings to improve prediction performance on nine diverse location-dependent tasks including temperature prediction, animal recognition, and population density estimation. Across tasks, SatCLIP consistently outperforms alternative location encoders and improves geographic generalization by encoding visual similarities of spatially distant environments. These results demonstrate the potential of vision-location models to learn meaningful representations of our planet from the vast, varied, and largely untapped modalities of geospatial data.","url_abs":"https://arxiv.org/abs/2311.17179v3","url_pdf":"https://arxiv.org/pdf/2311.17179v3.pdf","source":{"archive":"pwc-archive (Hugging Face), CC BY-SA 4.0","snapshot":"2025-07-28","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","row_kind":"abstracts"},"code_links":[{"paper_slug":"satclip-global-general-purpose-location","repo_url":"https://github.com/microsoft/satclip","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}},{"paper_slug":"satclip-global-general-purpose-location","repo_url":"https://github.com/kelsdoerksen/giga-connectivity","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"none","reach":{"status":"ok"}}],"tasks":[{"task_slug":"contrastive-learning","task_name":"Contrastive Learning"}],"methods":[],"datasets_introduced":[{"slug":"s2-100k","name":"S2-100K","full_name":""}],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2311.17179","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2311.17179"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-24T18:15:14+00:00","read_at_is":"when the build read Syntology's graph, not when any sample ran","claim":"Per-sample execution status on synthesized fixtures; not a correctness claim about the paper. Samples come from repositories linked to the paper, official or community; repo_kind says which.","repos":[{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/kelsdoerksen/giga-connectivity","reach":{"status":"ok"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/microsoft/satclip","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"ran_honours":1,"ran_violates":1,"ran":3,"unverified":3},"by_repo_kind":{"official":{"samples":8,"ran":5,"repositories":1}},"repo_kind_vocabulary":{"official":"The archive marks this repository official for the paper","named_in_paper":"The archive records that the paper mentions this repository; it is not marked official","listed":"In the archive's code links for this paper, not marked official and not recorded as mentioned in the paper","found_in_text":"Syntology found this repository in the paper's own text; whether it is the authors' implementation is not asserted","community":"Not in the archive's code links for this paper; a community repository Syntology harvested"},"n_pointer_only_for_licence":0,"samples":[{"code_sha256_prefix":"7bd1641f670e602d","entry":"cast_tuple","repo":"microsoft/satclip","repo_kind":"official","path":"satclip/location_encoder.py","file_url":"https://github.com/microsoft/satclip/blob/HEAD/satclip/location_encoder.py","link_basis":"harvester_set","language":"python","status":"ran_honours","verification_level":1,"contract_check":"HONOURS","metamorphic_tier":"well_formed","behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"7bd1641f670e602d"}},{"code_sha256_prefix":"aa5486a3650902d8","entry":"exists","repo":"microsoft/satclip","repo_kind":"official","path":"satclip/location_encoder.py","file_url":"https://github.com/microsoft/satclip/blob/HEAD/satclip/location_encoder.py","link_basis":"harvester_set","language":"python","status":"ran_violates","verification_level":1,"contract_check":"VIOLATES","metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"aa5486a3650902d8"}},{"code_sha256_prefix":"35578a3c4b7fd263","entry":"get_pretrained_s2_train_transform","repo":"microsoft/satclip","repo_kind":"official","path":"satclip/datamodules/transforms.py","file_url":"https://github.com/microsoft/satclip/blob/HEAD/satclip/datamodules/transforms.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"35578a3c4b7fd263"}},{"code_sha256_prefix":"4a34622d40e6cf8d","entry":"get_s2_train_transform","repo":"microsoft/satclip","repo_kind":"official","path":"satclip/datamodules/transforms.py","file_url":"https://github.com/microsoft/satclip/blob/HEAD/satclip/datamodules/transforms.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"4a34622d40e6cf8d"}},{"code_sha256_prefix":"dbacf18b2314d32e","entry":"interpolate_pixel_values","repo":"microsoft/satclip","repo_kind":"official","path":"satclip/positional_encoding/discretized_spherical_harmonics.py","file_url":"https://github.com/microsoft/satclip/blob/HEAD/satclip/positional_encoding/discretized_spherical_harmonics.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"dbacf18b2314d32e"}},{"code_sha256_prefix":"006f2c552def076f","entry":"SH_","repo":"microsoft/satclip","repo_kind":"official","path":"satclip/positional_encoding/discretized_spherical_harmonics.py","file_url":"https://github.com/microsoft/satclip/blob/HEAD/satclip/positional_encoding/discretized_spherical_harmonics.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"006f2c552def076f"}},{"code_sha256_prefix":"4770edfb1293f71f","entry":"get_satclip","repo":"microsoft/satclip","repo_kind":"official","path":"satclip/load.py","file_url":"https://github.com/microsoft/satclip/blob/HEAD/satclip/load.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"4770edfb1293f71f"}},{"code_sha256_prefix":"865dc35483229513","entry":"get_train_transform","repo":"microsoft/satclip","repo_kind":"official","path":"satclip/datamodules/transforms.py","file_url":"https://github.com/microsoft/satclip/blob/HEAD/satclip/datamodules/transforms.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"865dc35483229513"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}