Polígonos bem recortados ggplot2 / ggmap em diferentes níveis de zoom

Estou jogando com um conjunto de dados espaciais (principalmente polígonos sobre uma área de uma cidade) e gostaria de produzir visualizações diferentes, com base em diferentes níveis de zoom. Tudo está bem quando eu tenho a caixa de limite de plotagem maior que a área que contém os polígonos. Mas em um zoom, alguns polígonos obtêm partes que estão fora da caixa de limite e a saída para esses polígonos é problemática: os pontos do polígono fora da caixa de limite não são exibidos, resultando em polígonos que não são cortados nos limites da caixa de limite ( como seria de esperar), mas não são considerados. os polígonos são incompletos e o polígono une-se apenas aos pontos remanescentes na trama (comportamento normal, mas não desejado).

Um bom exemplo vale toda a discussão, aqui está uma demonstração do problema:

#initialisation
library(ggmap)
require(MASS)

data(zips)

# overview
ggmap(get_map(maptype = "satellite", zoom = 8), extent = "device") +
        geom_polygon(aes(x = lon, y = lat, group = plotOrder),
                data = zips, colour = NA, fill = "red", alpha = .5) +
        geom_path(aes(x = lon, y = lat, group = plotOrder),
                data = zips, colour = "white", alpha = .7, size = .4)

# problematic view    
x11()
ggmap(get_map(maptype = "satellite", zoom = 12), extent = "device") +
        geom_polygon(aes(x = lon, y = lat, group = plotOrder),
                data = zips, colour = NA, fill = "red", alpha = .5) +
        geom_path(aes(x = lon, y = lat, group = plotOrder),
                data = zips, colour = "white", alpha = .7, size = .4)

Você saberia de uma boa técnica para cortar corretamente os polígonos nos limites da caixa de limite da parcela? Obrigado pela ajuda

Pascal

questionAnswers(1)

yourAnswerToTheQuestion